log4net 配置

 log4net主要有Appenders(输出媒介)、Filters(过滤器)、Layouts(布局)、Loggers(日志类别)、Object Renders(渲染器)组成。

log4net配置示例

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
  </configSections>
  <log4net>
    <root>
        <level value="DEBUG" />
        <appender-ref ref="Console" />
        <appender-ref ref="RollingFile" />
    </root>
    <appender name="Console" type="log4net.Appender.ConsoleAppender">
        <layout type="log4net.Layout.PatternLayout">
            <!-- Pattern to output the caller's file name and line number -->
            <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />
        </layout>
    </appender>
    
    <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
        <file value="example.log" />
        <appendToFile value="true" />
        <maximumFileSize value="100KB" />
        <maxSizeRollBackups value="2" />

        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%level %thread %logger - %message%newline" />
        </layout>
    </appender>
  </log4net>
</configuration>
    
View Code

配置方式1:直接配置在web.config或app.config中

配置方式2:可以配置在自定义文件中***.***,文件内容格式同web.config或app.config

<root>为根节点

<logger>继承<root>,logger输出日志时,<root>也输出。示例

 <logger name="loginfo">
      <level value="INFO" />
      <appender-ref ref="InfoAppender" />
 </logger>

Logger提供了多种方式来记录一个日志消息,也可以有多个Logger同时存在。每个实例化的Logger对象对被log4net作为命名实体(Named Entity)来维护。log4net使用继承体系,也就是说假如存在两个Logger,名字分别为a.b.c和a.b。那么a.b就是a.b.c的祖先。每个Logger都继承了它祖先的属性

<level>为日志等级;由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF;比如定义级别为<level value="INFO"/>,则INFO级别向下的级别,比如DEBUG日志将不会被记录;如果没有定义LEVEL的值,则缺省为DEBUG

<appender>为输出媒介,常用有AdoNetAppender(输出到数据库),AspNetTraceAppender(输出到ASP.NET日志),ConsoleAppender(输出到console),BufferingForwardingAppender(按信息条数输出到console),ColoredConsoleAppender/ManagedColoredConsoleAppender(根据设定颜色输出到console),EventLogAppender(输出到操作系统应用程序日志),FileAppender(输出到文件),RollingFileAppender(有回收的输出到文件),SmtpAppender(输出到邮件),RemotingAppender(远程输出)

 <filter>过滤器,用来过滤输出源输出的内容,其中包括:

·DenyAllFilter 阻止所有的日志事件被记录

·LevelMatchFilter 只有指定等级的日志事件才被记录

·LevelRangeFilter 日志等级在指定范围内的事件才被记录

·LoggerMatchFilter Logger名称匹配,才记录

·PropertyFilter 消息匹配指定的属性值时才被记录

·StringMathFilter 消息匹配指定的字符串才被记录

示例:

<appender name="infoAppender" type="log4net.Appender.RollingFileAppender">
        <filter type="log4net.Filter.LevelMatchFilter">
            <levelToMatch value="INFO" />
        </filter>
        <filter type="log4net.Filter.DenyAllFilter" />

......

 </appender>

log4net layout ConversionPattern常用符号说明

   %m,%message:输出的日志消息;

   %M,%method:输出调用日志输出的方法名;

   %n,%newline:输出一个回车换行符;

   %d,%date:输出当前语句运行的时刻,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },输出2015-03-10 14:53:28;也可以%d{ISO8601}输出2015-03-10 14:51:12,220, %d{DATE}输出‘10 Mar 2015 14:51:51,318’, %d{ABSOLUTE}输出14:54:07,943,%d{HH:mm:ss,fff}, %d{dd MM yyyy HH:mm:ss,fff},yyyy年份,MM月份,dd日期,HH小时小时24制,hh小时12小时制,mm分钟,ss秒,fff毫秒(f为秒的精确位数,几个f代表精确到小数点后几位)

   %r(runtime),%timestamp:输出程序从运行到执行到当前语句时消耗的毫秒数;

   %t,%thread:当前语句所在的线程ID ;

   %p(priority),%level: 输出日志的当前日志级别,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG;

   %C(class),%class,%type:输出当前日志对象的名称,%C{1}输出日志调用最后第一个类;

   %c(category), %logger:输出日志信息所属目录类型logger name

   %L,%line:输出语句所在的行号;

   %l,%location:输出%F%L%C%M

   %F,%file: 输出语句所在的文件名;

   %a,%appdomain:输出引发日志事件的应用程序域的友好名称

   %x,%ndc : 输出(nested diagnostic context)ndc上下文内容

   %X,%mdc:输出(mapped diagnostic context)mdc上下文内容

   %P,%property: 输出事件的特殊属性。例如: %property{user} 输出user属性

   %[-|.]数字: %10,表示最小长度为10,如果不够,则用空格左侧填充;%-10,表示最小长度为10,如果不够,则用空格右侧填充;%.10,表示最大长度为10;可以与%m等其他格式组合使用,示例%10m,%-10m,%10.10m,%-10.10m

   %%:输出%

log4net 启动配置

  方式1:assemblyInfo.cs 文件中添加[assembly: log4net.Config.XmlConfigurator(ConfigFile = "***.***", Watch = true)],ConfigFile为文件名,缺省为监控app.config或web.config;Watch为是否需要监视文件改变。

  方式2:在app.config或web.config配置文件中添加appSettings

  <appSettings>

      <add key="log4net.Config" value="***.***"/>

      <add key="log4net.Config.Watch" value="True"/>

  </appSettings>

官方地址:http://logging.apache.org/log4net/

配置示例:http://logging.apache.org/log4net/release/config-examples.html

其中按天,限制文件大小,限制文件个数复合配置:

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="logfile" />
    <appendToFile value="true" />
    <rollingStyle value="Composite" />
    <datePattern value="yyyyMMdd" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="1MB" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
</appender>

  

原文地址:https://www.cnblogs.com/hobinly/p/log4net.html