Winform Log4Net实战:实现每天一个文件记录服务程序的执行情况。

来源:互联网 发布:淘宝猎狐者户外冲锋衣 编辑:程序博客网 时间:2024/05/01 12:19

看来周公的Log4Net介绍,深有感触,当项目发布之后遇到一些问题,无法定位无法调试解决起来困难很大。下面我在项目中的服务程序使用Log4Net的日志记录功能:

1. 下载Log4Net源码

        http://logging.apache.org/log4net/


2. 在项目中加入引用。

3.配置Config文件

APP
<?xml version="1.0" encoding="utf-8" ?><configuration>    <configSections>        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />    </configSections>    <log4net>        <root>            <level value="ALL" />            <appender-ref ref="rollingFile" />        </root>        <appender  name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net" >            <param name="File" type="" value="D:/logs/" />            <!--最小锁定模型以允许多个进程可以写入同一个文件-->            <param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />            <param name="StaticLogFileName" value="true" />                        <param name="AppendToFile" value="true" />            <param name="RollingStyle" value="Date" />            <param name="DatePattern" value="yyyyMMdd.'log'" />            <param name="StaticLogFileName" value="false" />            <layout type="log4net.Layout.PatternLayout,log4net">                <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />                <param name="Header" value="----------------------header--------------------------" />                <param name="Footer" value="----------------------footer--------------------------" />            </layout>        </appender>        <appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net">            <layout type="log4net.Layout.PatternLayout,log4net">                <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />            </layout>        </appender>        <logger name="WindowsApplication1.Form1">            <level value="DEBUG" />            <appender-ref  ref="rollingFile" />            <appender-ref ref="coloredConsoleApp" />            <appender-ref ref="SystemEvent" />        </logger>    </log4net></configuration>


1.在WindowsApplication项目新增“应用程序配置文件”.

2.将一下内容Copy至“configuration”节点中

<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
    <root>
      <level value="ALL" />
      <appender-ref ref="rollingFile" />
    </root>
    <appender  name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net" >
      <param name="File" value="log.txt" />
      <param name="AppendToFile" value="false" />
      <param name="RollingStyle" value="Date" />
      <param name="DatePattern" value="yyyy.MM.dd" />
      <param name="StaticLogFileName" value="true" />
      <layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
        <param name="Header" value="&#13;&#10;----------------------header--------------------------&#13;&#10;" />
        <param name="Footer" value="&#13;&#10;----------------------footer--------------------------&#13;&#10;" />
      </layout>
    </appender>
    <appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net">
      <layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
      </layout>
    </appender>
    <logger name="WindowsApplication1.Form1">
      <level value="DEBUG" />
      <appender-ref  ref="rollingFile" />
      <appender-ref ref="coloredConsoleApp" />
      <appender-ref ref="SystemEvent" />
    </logger>
  </log4net>
3.在AssemblyInfo.cs文件中添加一下代码

[assembly: log4net.Config.XmlConfigurator(Watch = true)]
4.在Form1测试事件代码

log4net.ILog log = log4net.LogManager.GetLogger(this.GetType());
log.Debug("debug");
log.Info("info");
log.Warn("warn");
log.Error("error");
MessageBox.Show("生成日志成功!");
5.差点忘了,添加对log4net.dll的引用。

6.运行程序,触发测试事件代码。在项目文件下bin\Debug目录下有个log.txt就是生成的日志文件,中间有记录的测试信息。

7。结束。(有空再来补充各项设置意义^_^,现在自己也不会)

这个只是在bin文件生成一个Log.txt文件。需要扩展的是 要在bin文件下生成一个log文件夹,然后再里面按照日期来生产log文件。(待续)

替换了这个部分<appender  name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net" >
      <param name="File" type="" value="log/" />
      <param name="AppendToFile" value="true" />
      <param name="RollingStyle" value="Date" />
      <param name="DatePattern" value="yyyyMMdd" />
      <param name="StaticLogFileName" value="false" />
      <layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
        <param name="Header" value="&#13;&#10;----------------------header--------------------------&#13;&#10;" />
        <param name="Footer" value="&#13;&#10;----------------------footer--------------------------&#13;&#10;" />
      </layout>
    </appender>

就可以生成log文件夹,并在下面写日期文件名开头的vlog。


LogHelper


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using log4net;
using System.Reflection;
//需要加上:负责log4net无法工作
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace DataImportService
{
    class LogHelper
    {
        /// <summary>
        /// 输出日志内容
        /// log.Debug("debug");
        /// log.Info("info");
        /// log.Warn("warn");
        /// log.Error("error");
        /// </summary>
        /// <param name="message"></param>
        /// <param name="methods"></param>
        public void WriteLog(string message)
        {
            ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
            log.Info(message);
        }
    }
}

原创粉丝点击