(24)C#log4net配置和使用

一、下载并引用log4

 

DLL下载  http://logging.apache.org/

 找到.net版本的

 

 点击下载

 找到编译好的bin

 

 选择net

选择你项目对应的.net framework版本

里面的DLL就是我们要用的文件,

 把他引用到项目中

 

引入命名空间

 

二、配置APPconfig

1、创建APPconfig

配置APPconfig

在工程名上右键-添加-新建项,找到应用程序配置文件,默认名App.config

 

创建成功后默认代码如下,所有的配置都要写在<configuration></configuration>之间

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

</configuration>

 

2、<log4net></log4net>里有五个子元素

 

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net>

    <root></root>
    <logger></logger>
    <appender></appender>
    <layout></layout>
    <param></param>

</log4net>
</configuration>

 

 三、控制台输出日志

1、新建并配置APP.config

<?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="ConsoleAppender" />
    </root>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">   
      </layout>
    </appender>
  </log4net>
</configuration>

2、

默认的APP.config编译后文件是和bin文件夹在同一级的

选中APP.config右键属性-把复制到输出目录设置为始终复制,这样就拷贝了一份config文件到bin里

3、关联APP.config文件

打开工程Properties文件夹下的AssemblyInfo.cs 加入代码

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "App.config", Watch = true)]

如果控制台不输出日志,去掉configFile

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

 

 

4、控制台代码

using System;
using System.Collections.Generic;
using System.Text;
using log4net;

namespace log4
{
    class Program
    {
        static void Main(string[] args)
        {
            ILog log = LogManager.GetLogger("ConsoleAppender");
            log.Info("测试");
            Console.ReadKey();
        }
    }
}

 

 

四、文件输出日志

 

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
  <log4net>
    <appender name="FileAppender" type="log4net.Appender.FileAppender">
      <file value="Log.log" />
      <Layout type="log4net.Layout.PatternLayout"> 
      </Layout>
    </appender>
    <root>
      <level value="ALL" />
      <appender-ref ref="FileAppender" />
    </root>
  </log4net>
</configuration>

运行三次

 

 

五、数据库记录日志

 

 

六、记录多个日志文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
  <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>

  <logger name="Logging">
    <level value="ALL"/>
    <appender-ref ref="RollingFileAppender_INFO"/>
    <appender-ref ref="RollingFileAppender_WARN"/>
  </logger>

  <!--记录INFO方法的日志-->
  <appender name="RollingFileAppender_INFO" type="log4net.Appender.RollingFileAppender">
    <file value="./Log/INFO." />
    <appendToFile value="true" />
    <rollingStyle value="Composite" />
    <datePattern value="yyyyMMdd" />
    <Encoding value="UTF-8" />
    <param name="maximumFileSize" value="80MB" />
    <maxSizeRollBackups value="10" />
    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="[%d] - %m%n" />
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <param name="LevelMin" value="INFO" />
      <param name="LevelMax" value="INFO" />
    </filter>
  </appender>

  <!--记录WARN方法的日志-->
  <appender name="RollingFileAppender_WARN" type="log4net.Appender.RollingFileAppender">
    <file value="./Log/WARN." />
    <appendToFile value="true" />
    <rollingStyle value="Composite" />
    <datePattern value="yyyyMMdd" />
    <Encoding value="UTF-8" />
    <param name="maximumFileSize" value="80MB" />
    <maxSizeRollBackups value="10" />
    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="[%d] - %m%n" />
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <param name="LevelMin" value="WARN" />
      <param name="LevelMax" value="WARN" />
    </filter>
  </appender>
</log4net>
</configuration>

 

            ILog log = LogManager.GetLogger("Logging");
            log.Info("测试1");
            log.Warn("测试2");
            Console.ReadKey();

 

七、log4j.appender.appender1.layout.ConversionPattern=日志输出格式

  1. 例如,%d - %m%n或%d{yyyy-MM-dd HH:mm:ss} %p [%c] %m%n
  2. %c 输出日志信息所属的类的全名
  3. %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-M-dd HH:mm:ss },输出类似:2002-10-18- 22:10:28
  4. %f 输出日志信息所属的类的类名
  5. %l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行
  6. %m 输出代码中指定的信息,如log(message)中的message
  7. %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
  8. %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推
  9. %r 输出自应用启动到输出该日志信息所耗费的毫秒数
  10. %t 输出产生该日志事件的线程名

 

参考文档:

http://www.cnblogs.com/alipayhutu/archive/2012/06/21/2558249.html

http://www.cnblogs.com/zhangchenliang/p/4546352.html

 等

posted @ 2016-12-07 11:17  富坚老贼  阅读(495)  评论(0编辑  收藏  举报