log4net 配置 一站式解决

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <log4net>
    <!--日志的等级,它们由高到底分别为: OFF > FATAL > ERROR > WARN > INFO > DEBUG  > ALL-->
    <root>
      <!--最多一个。 只有在这个级别或之上的事件才会被记录。-->
      <level value="ALL"/>
      <!--要引用的appender的名字-->
      <appender-ref ref="LogFileAppender"/>
    </root>
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
      <!-- 输出到什么目录-->
      <param name="File" value="G:/log/"/>
      <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
      <param name="RollingStyle" value="Date" />
      <!--此处按日期产生文件夹,文件名固定。注意&quot; 的位置-->
      <param name="DatePattern" value="yyyyMM/dd/&quot;all.log&quot;"/>
      <!--这是按日期产生文件夹,并在文件名前也加上日期     <param name="DatePattern" value="yyyyMMdd/yyyyMMdd&quot;-TimerServer.log&quot;"  />-->
      <!--这是先按日期产生文件夹,再形成下一级固定的文件夹 <param name="DatePattern" value="yyyyMMdd/&quot;TimerServer/TimerServer.log&quot;"  />-->
      <!-- 是否覆写到文件中-->
      <param name="AppendToFile" value="true"/>
      <!--每个文件的大小。只在混合方式与文件大小方式下使用。超出大小后在所有文件名后自动增加正整数重新命名,数字最大的最早写入。可用的单位:KB|MB|GB。不要使用小数,否则会一直写入当前日志-->
      <param name="maximumFileSize" value="2MB" />
      <!-- 备份文件的个数(当日志文件达到MaxFileSize大小,就自动创建备份文件,超过此数量后 自动删除之前的)-->
      <param name="MaxSizeRollBackups" value="100" />
      <!-- 是否使用静态文件名(采用静态文件名,那么日志文件的名字就是唯一确定的)-->
      <param name="StaticLogFileName" value="false" />
      <!--使用Unicode编码-->
      <Encoding value="UTF-8" />
      <!--记录日志写入文件时,不锁定文本文件,防止多线程时不能写Log,官方说线程非安全-->
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
      <!--定义appender使用的输出格式;布局,只能作为<appender>的子元素-->
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="【记录时间】%date%n【程序信息】线程ID:[%thread] 日志级别:%-5p 耗时:%r%n【消息描述】%message%n%exception%n------------------------%n"/>
      </layout>
    </appender>
    <!--信息记录-->
    <logger name="InfoLoger">
      <level value="INFO"/>
      <appender-ref ref="InfoFileAppender"/>
    </logger>
    <appender name="InfoFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="G:/log/"/>
      <param name="AppendToFile" value="true"/>
      <Encoding value="UTF-8" />
      <param name="MaxSizeRollBackups" value="10" />
      <param name="maximumFileSize" value="5MB" />
      <param name="StaticLogFileName" value="false" />
      <param name="RollingStyle" value="Composite" />
      <param name="DatePattern" value="yyyyMM/dd/&quot;info.log&quot;"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="【记录时间】%date%n【程序信息】线程ID:[%thread]%n【消息描述】%message%n------------------------%n"/>
      </layout>
    </appender>
    <!--错误记录-->
    <logger name="ErrorLoger">
      <level value="ERROR"/>
      <appender-ref ref="ErrorFileAppender"/>
    </logger>
    <appender name="ErrorFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="G:/log/"/>
      <param name="AppendToFile" value="true"/>
      <Encoding value="UTF-8" />
      <param name="MaxSizeRollBackups" value="10" />
      <param name="maximumFileSize" value="5MB" />
      <param name="StaticLogFileName" value="false" />
      <param name="RollingStyle" value="Composite" />
      <param name="DatePattern" value="yyyyMM/dd/&quot;error.log&quot;"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern"  value="【记录时间】%date%n【程序信息】线程ID:[%thread] 耗时:%r%n【消息描述】消息:%message%n异常:%exception%n------------------------%n" />
      </layout>
    </appender>
    <!--致命记录-->
    <logger name="FatalLoger">
      <level value="FATAL"/>
      <appender-ref ref="FatalFileAppender"/>
    </logger>
    <appender name="FatalFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="G:/log/"/>
      <param name="AppendToFile" value="true"/>
      <Encoding value="UTF-8" />
      <param name="MaxSizeRollBackups" value="10" />
      <param name="maximumFileSize" value="5MB" />
      <param name="StaticLogFileName" value="false" />
      <param name="RollingStyle" value="Composite" />
      <param name="DatePattern" value="yyyyMM/dd/&quot;fatal.log&quot;"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern"  value="【记录时间】%date%n【程序信息】线程ID:[%thread] 耗时:%r%n【消息描述】%m %n异常:%exception%n------------------------%n" />
      </layout>
    </appender>
  </log4net>
</configuration>
<!--a       等价于appdomain
appdomain   引发日志事件的应用程序域的友好名称。(使用中一般是可执行文件的名字。)
c           等价于 logger
C           等价于 type
class       等价于 type
d           等价于 date
date        发生日志事件的本地时间。 使用 DE>%utcdate 输出UTC时间。date后面还可以跟一个日期格式,用大括号括起来。DE>例如:%date{HH:mm:ss,fff}或者%date{dd MMM yyyy HH:mm:ss,fff}。如果date后面什么也不跟,将使用ISO8601 格式 。日期格式和.Net中DateTime类的ToString方法中使用的格式是一样。另外log4net还有3个自己的格式Formatter。 它们是 "ABSOLUTE", "DATE"和"ISO8601"分别代表 AbsoluteTimeDateFormatter, DateTimeDateFormatter和Iso8601DateFormatter。例如:%date{ISO8601}或%date{ABSOLUTE}。它们的性能要好于ToString。
exception   异常信息日志事件中必须存了一个异常对象,如果日志事件不包含没有异常对象,将什么也不输出。异常输出完毕后会跟一个换行。一般会在输出异常前加一个换行,并将异常放在最后。
F           等价于 file
file        发生日志请求的源代码文件的名字。警告:只在调试的时候有效。调用本地信息会影响性能。
identity    当前活动用户的名字(Principal.Identity.Name).警告:会影响性能。(我测试的时候%identity返回都是空的。)
l           等价于 location
L           等价于 line
location    引发日志事件的方法(包括命名空间和类名),以及所在的源文件和行号。警告:会影响性能。没有pdb文件的话,只有方法名,没有源文件名和行号。
level       日志事件等级
line        引发日志事件的行号。警告:会影响性能。
logger      记录日志事件的Logger对象的名字。可以使用精度说明符控制Logger的名字的输出层级,默认输出全名。注意,精度符的控制是从右开始的。例如:logger 名为 "a.b.c", 输出模型为%logger{2} ,将输出"b.c"。
m           等价于 message
M           等价于 method
message     由应用程序提供给日志事件的消息。
mdc         MDC (旧为:ThreadContext.Properties) 现在是事件属性的一部分。 保留它是为了兼容性,它等价于 property。
method      发生日志请求的方法名(只有方法名而已)。警告:会影响性能。
n           等价于 newline
newline     换行符
ndc         NDC (nested diagnostic context)
p           等价于 level
P           等价于 property
properties  等价于 property
property    输出事件的特殊属性。例如: %property{user} 输出user属性。属性是由loggers或appenders添加到事件中的。 有一个默认的属性"DE>log4net:HostName"总是会有。DE>%property将输出所有的属性 。(扩展后可以使用)
r           等价于 timestamp
t           等价于 thread
timestamp   从程序启动到事件发生所经过的毫秒数。
thread      引发日志事件的线程,如果没有线程名就使用线程号。
type        引发日志请求的类的全名。可以使用精度控制符。例如: 类名是 "log4net.Layout.PatternLayout", 格式模型是%type{1} 将输出"PatternLayout"。(也是从右开始的。)警告:会影响性能。
u           等价于 identity
username    当前用户的WindowsIdentity。(类似:HostName/Username)警告:会影响性能。
utcdate     发生日志事件的UTC时间。DE>后面还可以跟一个日期格式,用大括号括起来。DE>例如:%utcdate{HH:mm:ss,fff}或者%utcdate{dd MMM yyyy HH:mm:ss,fff}。如果utcdate后面什么也不跟,将使用ISO8601 格式 。日期格式和.Net中DateTime类的ToString方法中使用的格式是一样。另外log4net还有3个自己的格式Formatter。 它们是 "ABSOLUTE", "DATE"和"ISO8601"分别代表 AbsoluteTimeDateFormatter, DateTimeDateFormatter和Iso8601DateFormatter。例如:%date{ISO8601}或%date{ABSOLUTE}。
它们的性能要好于ToString。
w           等价于 username
x           等价于 ndc
X           等价于 mdc
%           %%输出一个百分号-->

<!--=============================layout节点的配置说明================================-->
<!--        Made By AX     -->
<!--        %m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息                      -->
<!--        %n(new line):换行                                                         -->
<!--        %d(datetime):输出当前语句运行的时刻                                          -->
<!--        %r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数                        -->
<!--        %t(thread id):当前语句所在的线程ID                                         -->
<!--        %p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等                     -->
<!--        %c(class):当前日志对象的名称,例如:                                         -->
<!--               模式字符串为:%-10c -%m%n                                           -->
<!--               代码为:                                                           -->
<!--        ILog log=LogManager.GetLogger(“Exam.Log”);                              -->
<!--        log.Debug(“Hello”);                                                     -->
<!--            则输出为下面的形式:                                                    -->
<!--        Exam.Log       - Hello                                                  -->
<!--        %L:输出语句所在的行号                                                       -->
<!--        %F:输出语句所在的文件名                                       -->
<!--        %-数字:表示该项的最小长度,如果不够,则用空格填充                         -->
<!--      例如,转换模式为%r [%t]%-5p %c - %m%n 的 PatternLayout 将生成类似于以下内容的输出: -->
<!--     176 [main] INFO  org.foo.Bar - Located nearest gas station.                 -->
posted @ 2020-04-28 18:50  稻草堆上打着滚儿  阅读(215)  评论(0编辑  收藏  举报