配置效果圖:
配置代碼:

1 <?xml version="1.0" encoding="utf-8" ?> 2 <log4net> 3 <!-- Debug 將日志以回滾文件的形式寫到文件中 --> 4 <appender name="RollingFileDebug" type="log4net.Appender.RollingFileAppender" > 5 <!-- 日志文件存放位置,可以為絕對路徑也可以為相對路徑 --> 6 <file value="App_Data\\" /> 7 <!-- 日志文件的命名規則 --> 8 <datePattern value="yyyy-MM-dd/'Debug.log'"/> 9 <!-- 將日志信息追加到已有的日志文件中--> 10 <appendToFile value="true" /> 11 <rollingStyle value="Size" /> 12 <maxSizeRollBackups value="100" /> 13 <maximumFileSize value="1MB" /> 14 <!-- 指定按日期切分日志文件 --> 15 <rollingStyle value="Date"/> 16 <!-- 當將日期作為日志文件的名字時,必須將staticLogFileName的值設置為false --> 17 <staticLogFileName value="false" /> 18 <!-- 最小鎖定模式,以允許多個進程可以寫入同一個文件 --> 19 <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 20 <layout type="log4net.Layout.PatternLayout"> 21 <conversionPattern value="%newline%newline【日志時間】: %d 【線程ID】: %thread %newline【日志級別】: %-5p %newline【日志對象】:%logger %newline【日志內容】:%m %newline" /> 22 </layout> 23 <filter type="log4net.Filter.LevelRangeFilter"> 24 <param name="LevelMin" value="Debug" /> 25 <param name="LevelMax" value="Debug" /> 26 </filter> 27 </appender> 28 29 <!-- Info 將日志以回滾文件的形式寫到文件中 --> 30 <appender name="RollingFileInfo" type="log4net.Appender.RollingFileAppender" > 31 <!-- 日志文件存放位置,可以為絕對路徑也可以為相對路徑 --> 32 <file value="App_Data\\" /> 33 <!-- 日志文件的命名規則 --> 34 <datePattern value="yyyy-MM-dd/'Info.log'"/> 35 <!-- 將日志信息追加到已有的日志文件中--> 36 <appendToFile value="true" /> 37 <rollingStyle value="Size" /> 38 <maxSizeRollBackups value="100" /> 39 <maximumFileSize value="1MB" /> 40 <!-- 指定按日期切分日志文件 --> 41 <rollingStyle value="Date"/> 42 <!-- 當將日期作為日志文件的名字時,必須將staticLogFileName的值設置為false --> 43 <staticLogFileName value="false" /> 44 <!-- 最小鎖定模式,以允許多個進程可以寫入同一個文件 --> 45 <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 46 <layout type="log4net.Layout.PatternLayout"> 47 <conversionPattern value="%newline%newline【日志時間】:%d 【線程ID】:%thread %newline【日志級別】:%-5p %newline【日志對象】:%logger %newline【日志內容】:%m %newline" /> 48 </layout> 49 <filter type="log4net.Filter.LevelRangeFilter"> 50 <param name="LevelMin" value="Info" /> 51 <param name="LevelMax" value="Info" /> 52 </filter> 53 </appender> 54 55 <!-- WARN 將日志以回滾文件的形式寫到文件中 --> 56 <appender name="RollingFileWarn" type="log4net.Appender.RollingFileAppender" > 57 <!-- 日志文件存放位置,可以為絕對路徑也可以為相對路徑 --> 58 <file value="App_Data\\" /> 59 <!-- 日志文件的命名規則 --> 60 <datePattern value="yyyy-MM-dd/'Warn.log'"/> 61 <!-- 將日志信息追加到已有的日志文件中--> 62 <appendToFile value="true" /> 63 <rollingStyle value="Size" /> 64 <maxSizeRollBackups value="100" /> 65 <maximumFileSize value="1MB" /> 66 <!-- 指定按日期切分日志文件 --> 67 <rollingStyle value="Date"/> 68 <!-- 當將日期作為日志文件的名字時,必須將staticLogFileName的值設置為false --> 69 <staticLogFileName value="false" /> 70 <!-- 最小鎖定模式,以允許多個進程可以寫入同一個文件 --> 71 <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 72 <layout type="log4net.Layout.PatternLayout"> 73 <conversionPattern value="%newline%newline【日志時間】:%d 【線程ID】:%thread %newline【日志級別】:%-5p %newline【日志對象】:%logger %newline【日志內容】:%m %newline" /> 74 </layout> 75 <filter type="log4net.Filter.LevelRangeFilter"> 76 <param name="LevelMin" value="Warn" /> 77 <param name="LevelMax" value="Warn" /> 78 </filter> 79 </appender> 80 81 <!-- Error 將日志以回滾文件的形式寫到文件中 --> 82 <appender name="RollingFileError" type="log4net.Appender.RollingFileAppender" > 83 <!-- 日志文件存放位置,可以為絕對路徑也可以為相對路徑 --> 84 <file value="App_Data\\" /> 85 <!-- 日志文件的命名規則 --> 86 <datePattern value="yyyy-MM-dd/'Error.log'"/> 87 <!-- 將日志信息追加到已有的日志文件中--> 88 <appendToFile value="true" /> 89 <rollingStyle value="Size" /> 90 <maxSizeRollBackups value="100" /> 91 <maximumFileSize value="1MB" /> 92 <!-- 指定按日期切分日志文件 --> 93 <rollingStyle value="Date"/> 94 <!-- 當將日期作為日志文件的名字時,必須將staticLogFileName的值設置為false --> 95 <staticLogFileName value="false" /> 96 <!-- 最小鎖定模式,以允許多個進程可以寫入同一個文件 --> 97 <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 98 <layout type="log4net.Layout.PatternLayout"> 99 <conversionPattern value="%newline%newline【日志時間】:%d 【線程ID】:%thread %newline【日志級別】:%-5p %newline【日志對象】:%logger %newline【日志內容】:%m %newline" /> 100 </layout> 101 <filter type="log4net.Filter.LevelRangeFilter"> 102 <param name="LevelMin" value="Error" /> 103 <param name="LevelMax" value="Error" /> 104 </filter> 105 </appender> 106 107 <!-- Fatal 將日志以回滾文件的形式寫到文件中 --> 108 <appender name="RollingFileFatal" type="log4net.Appender.RollingFileAppender" > 109 <!-- 日志文件存放位置,可以為絕對路徑也可以為相對路徑 --> 110 <file value="App_Data\\" /> 111 <!-- 日志文件的命名規則 --> 112 <datePattern value="yyyy-MM-dd/'Fatal.log'"/> 113 <!-- 將日志信息追加到已有的日志文件中--> 114 <appendToFile value="true" /> 115 <rollingStyle value="Size" /> 116 <maxSizeRollBackups value="100" /> 117 <maximumFileSize value="1MB" /> 118 <!-- 指定按日期切分日志文件 --> 119 <rollingStyle value="Date"/> 120 <!-- 當將日期作為日志文件的名字時,必須將staticLogFileName的值設置為false --> 121 <staticLogFileName value="false" /> 122 <!-- 最小鎖定模式,以允許多個進程可以寫入同一個文件 --> 123 <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 124 <layout type="log4net.Layout.PatternLayout"> 125 <conversionPattern value="%newline%newline【日志時間】:%d 【線程ID】:%thread %newline【日志級別】:%-5p %newline【日志對象】:%logger %newline【日志內容】:%m%newline" /> 126 </layout> 127 <filter type="log4net.Filter.LevelRangeFilter"> 128 <param name="LevelMin" value="Fatal" /> 129 <param name="LevelMax" value="Fatal" /> 130 </filter> 131 </appender> 132 133 <root> 134 <!--控制級別,由低到高:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF 135 比如定義級別為INFO,則INFO級別向下的級別,比如DEBUG日志將不會被記錄 136 如果沒有定義LEVEL的值,則缺省為DEBUG--> 137 <appender-ref ref="RollingFileDebug" /> 138 <appender-ref ref="RollingFileInfo" /> 139 <appender-ref ref="RollingFileWarn" /> 140 <appender-ref ref="RollingFileError" /> 141 <appender-ref ref="RollingFileFatal" /> 142 <level value="DEBUG" /> 143 </root> 144 <logger name="NHibernate"> 145 <level value="WARN" /> 146 </logger> 147 </log4net>
配置總結:
log4net主要有Appenders(輸出媒介)、Filters(過濾器)、Layouts(布局)、Loggers(日志類別)、Object Renders(渲染器)組成。
<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
%%:輸出%
解決占用問題
最小鎖定模式,以允許多個進程可以寫入同一個文件 例:
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
官方地址:http://logging.apache.org/log4net/
配置示例:http://logging.apache.org/log4net/release/config-examples.html