Log日志文件格式说明

 1   <log4net>
 2     <root>
 3       <!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
 4       <!--如果定义级别为INFO,则INFO级别向下的级别,例如DEBUG日志将不会被记录-->
 5       <!--如果没有定义LEVEL的值,则缺省为DEBUG-->
 6       <level value="ALL" />
 7       <appender-ref ref="LogFileAppender"/>
 8       <level value="FATAL"/>
 9       <appender-ref ref="CutOffAppender" />
10     </root>
11     <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
12       <param name="File" value="Log\\main.log" />
13       <param name="AppendToFile" value="true" />
14       <layout type="log4net.Layout.PatternLayout">
15         <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %p %u %c %l %m %n" />
16       </layout>
17     </appender>
18     <!--输出到回滚文件,FileAppender为单一文件-->
19     <appender name="CutOffAppender" type="log4net.Appender.RollingFileAppender">
20       <!--日志文件名-->
21       <param name="File" value="Log\\CutOff\\" />
22       <!--是否在文件中追加-->
23       <param name="AppendToFile" value="true" />
24       <!--最大变换数量-->
25       <param name="maxSizeRollBackups" value="100" />
26       <!--日志保留天数-->
27       <maxSizeRollBackups value="10" />
28       <!--每个文件的大小。只在混合方式与文件大小方式下使用。超出大小后在所有文件名后自动增加正整数重新命名,数字最大的最早写入。可用的单位:KB|MB|GB。不要使用小数,否则会一直写入当前日志-->  
29       <maximumFileSize value="100MB" />
30       <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
31       <rollingStyle value="Size" />
32       <!--否只写到一个文件中-->
33       <staticLogFileName value="true" />
34       <!--日期格式-->
35       <DatePattern value="yyyy\\yyyyMM\\yyyyMMdd&quot;.log&quot;" />
36       <!--变换的形式为日期-->
37       <rollingStyle value="Date" />
38       <staticLogFileName value="false" />
39       <!--是否立即输出到文件-->
40       <param name="ImmediateFlush" value="true" />
41       <layout type="log4net.Layout.PatternLayout">
42         <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %p %u %c %l %m %n" />
43       </layout>
44       <!--根据级别过滤,但没有生效,可能是我用的是Log4NetConfigurationSectionHandler-->
45       <filter type="log4net.Filter.LevelMatchFilter">
46         <param name="LevelToMatch" value="FATAL" />
47       </filter>
48     </appender>
49   </log4net>

 

一。Appender(引用自:https://blog.csdn.net/binnygoal/article/details/79557746)

已经实现的输出方式有:

AdoNetAppender 将日志记录到数据库中。可以采用SQL和存储过程两种方式。

AnsiColorTerminalAppender 将日志高亮输出到ANSI终端。

AspNetTraceAppender  能用asp.net中Trace的方式查看记录的日志。

BufferingForwardingAppender 在输出到子Appenders之前先缓存日志事件。

ConsoleAppender 将日志输出到应用程序控制台。

EventLogAppender 将日志写到Windows Event Log。

FileAppender 将日志输出到文件。

ForwardingAppender 发送日志事件到子Appenders。

LocalSyslogAppender 将日志写到local syslog service (仅用于UNIX环境下)。

MemoryAppender 将日志存到内存缓冲区。

NetSendAppender 将日志输出到Windows Messenger service.这些日志信息将在用户终端的对话框中显示。

OutputDebugStringAppender 将日志输出到Debuger,如果程序没有Debuger,就输出到系统Debuger。如果系统Debuger也不可用,将忽略消息。

RemoteSyslogAppender 通过UDP网络协议将日志写到Remote syslog service。

RemotingAppender 通过.NET Remoting将日志写到远程接收端。

RollingFileAppender 将日志以回滚文件的形式写到文件中。

SmtpAppender 将日志写到邮件中。

SmtpPickupDirAppender 将消息以文件的方式放入一个目录中,像IIS SMTP agent这样的SMTP代理就可以阅读或发送它们。

TelnetAppender 客户端通过Telnet来接受日志事件。

TraceAppender 将日志写到.NET trace 系统。

UdpAppender 将日志以无连接UDP数据报的形式送到远程宿主或用UdpClient的形式广播。

二.过滤器

引用自:https://blog.csdn.net/xincai/article/details/7696916

log4net里面的filter类常用的为:  
    1、DenyAllFilter  
       拒绝所用的日志输出  
       <filter type="log4net.Filter.LevelMatchFilter">  
           <param name="LevelToMatch" value="DEBUG" />        
       </filter>  
       <filter type="log4net.Filter.DenyAllFilter" />  
       上面的配置是如果日志的输出级别不符合DEBUG要求的话,则不输出任何日志。  
    2、LevelMatchFilter  
       这个类里面有两个属性,一个是LevelToMatch这个属性是你要匹配输出日志的级别,比如:  
        <filter type="log4net.Filter.LevelMatchFilter">  
           <param name="LevelToMatch" value="DEBUG" />        
        </filter>  
       这样的话,只有级别是DEBUG的日志才能输出。  
       另外这个类还有一个重要的属性就是AcceptOnMatch这个属性是设置如果这个条件匹配的话,是否接受输出打印,比如说:  
        <filter type="log4net.Filter.LevelMatchFilter">  
           <param name="LevelToMatch" value="DEBUG" />        
        </filter>  
        <filter type="log4net.Filter.StringMatchFilter">  
           <param name="StringToMatch" value="debug" />        
        </filter>  
       如果日志的级别为DEBVG的话,也就是说符合了第一个Filter的条件,日志就输出,则StringMatchFilter就不执行了。如果这样写的话,就会继续向下执行过滤:  
        <filter type="log4net.Filter.LevelMatchFilter">  
           <param name="LevelToMatch" value="DEBUG" />    
           <AcceptOnMatch value="false"></AcceptOnMatch>     
        </filter>  
        <filter type="log4net.Filter.StringMatchFilter">  
           <param name="StringToMatch" value="debug" />        
        </filter>  
       如果这样写的话,即使第一个Filter符合了条件则第二个Filter也会继续执行。  
    3、LevelRangeFilter  
       配置文件是这样的:  
        <filter type="log4net.Filter.LevelRangeFilter">  
            <param name="LevelMin" value="DEBUG" />  
            <param name="LevelMax" value="ERROR" />  
        </filter>  
    4、LoggerMatchFilter  
       配置文件是这样的:  
        <filter type="log4net.Filter.LoggerMatchFilter">  
            <param name="LoggerToMatch" value="Client" />  
        </filter>  
    5、StringMatchFilter  
       配置文件是这样的:  
        <filter type="log4net.Filter.StringMatchFilter">  
            <param name="StringToMatch" value="/blog/Client.Program" />  
        </filter>  

 三.等级说明

在具体写日志时,一般可以这样理解日志等级:

FATAL(致命错误):记录系统中出现的能使用系统完全失去功能,服务停止,系统崩溃等使系统无法继续运行下去的错误。例如,数据库无法连接,系统出现死循环。

ERROR(一般错误):记录系统中出现的导致系统不稳定,部分功能出现混乱或部分功能失效一类的错误。例如,数据字段为空,数据操作不可完成,操作出现异常等。

WARN(警告):记录系统中不影响系统继续运行,但不符合系统运行正常条件,有可能引起系统错误的信息。例如,记录内容为空,数据内容不正确等。

INFO(一般信息):记录系统运行中应该让用户知道的基本信息。例如,服务开始运行,功能已经开户等。

DEBUG (调试信息):记录系统用于调试的一切信息,内容或者是一些关键数据内容的输出。

非常完善的Log4net详细说明:https://blog.csdn.net/binnygoal/article/details/79557746大神写的贼全

posted @ 2019-01-02 17:44  陈浩楠  阅读(6876)  评论(0编辑  收藏  举报