現在項目涉及的是cs客戶端,在項目中使用log4net記錄本地日志和異常信息,這里項目做完了,想着自己做一個demo,測試記錄一下log4Net的配置使用。
第一步、新建一個wpf應用程序,項目右鍵 -----》點擊NuGet程序包 -----》搜索lognet -------》點擊安裝

第二步:在app.config中添加節點 (當然,如果是Web項目就是 web.config)
配置文件代碼如下:
<configuration>
<configSections>
<!--log4net配置-->
<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
</configSections>
<!--log4net配置-->
<log4net>
<!--定義輸出到文件中-->
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--定義文件存放位置-->
<!--file可以指定具體的路徑 D://logfile.txt。-->
<file value="D://logfile.txt"/>
<!--如果放在Debug下,當然名字你可以改 -->
<!--<file value="log//logfile.txt"/>-->
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<!--備份log文件的個數最多10個-->
<maxSizeRollBackups value="10" />
<!--每個log文件最大是2M,如果超過2M將重新創建一個新的log文件,並將原來的log文件備份。-->
<maximumFileSize value="2MB" />
<datePattern value="yyyyMMdd-HH:mm:ss"/>
<layout type="log4net.Layout.PatternLayout">
<!--輸出格式-->
<!--樣例:2008-03-26 13:42:32,111 [10] INFO Log4NetDemo.MainClass [(null)] - info-->
<conversionPattern value="記錄時間:%date 線程ID:[%thread] 日志級別:%-5level 出錯類:%logger property:[%property{NDC}] - 錯誤描述:%message%newline"/>
</layout>
</appender>
<!--定義日志的輸出媒介-->
<root>
<!--指定將此級別及以上的log打印到log文件中-->
<level value="DEBUG"/>
<!--文件形式記錄日志-->
<appender-ref ref="LogFileAppender"/>
</root>
</log4net>
</configuration>
把配置加到app.config中,如圖所示

第三步:
在項目中找到Properties文件夾中找到AssemblyInfo.cs 在代碼追后 添加 [assembly: log4net.Config.XmlConfigurator(Watch = true)]


第四步:添加操作log4net的后台代碼
xaml文件創建按鈕
<Button Name="logBtn" Click="LogBtn_Click" Content="創建日志" Width="60" Height="30"></Button>
xaml.cs 添加執行操作代碼
private void LogBtn_Click(object sender, RoutedEventArgs e) { string strLog = String.Format("[Thread ID:{0}]{1}", AppDomain.GetCurrentThreadId(), "Log4net寫入日志配置處理"); WriteLog(strLog); } private void WriteLog(string exp = null, string loggerName = "InfoLogger") {
//新建的一個靜態類 LogObject.Log(loggerName).Info(exp);
LogObject.Log(loggerName).Error(exp); }
public static class LogObject { public static ILog Log(string LoggerName) {
//log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
return LogManager.GetLogger(LoggerName); } }
第五步:
找到文件路徑D://logfile.txt 查看日志!


靜態類中獲取日志對象的另一種寫法:這個是程序自動獲取當前程序對象 (上面的我是通過WriteLog方法傳入的)
ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
return log;
日志輸出:

如果要在程序剛運行和退出的時候寫入日志,在App.xaml.cs中加入:
public static readonly ILog Log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); Log.Info("==Startup=====================>>>"); } protected override void OnExit(ExitEventArgs e) { Log.Info("<<<========================End=="); base.OnExit(e); }
先再運行編譯后的exe文件

然后退出程序,看結果

我們可以看到程序在進入和退出的時候也寫入了日志。
擴展的知識點:
日志記錄器(Logger)的級別順序:
分為OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定義的級別。Log4j建議只使用四個級別,優先級 從高到低分別是 ERROR、WARN、INFO、DEBUG。
通過在這里定義的級別,您可以控制到應用程序中相應級別的日志信息的開關。比如在這里定義了INFO級別, 則應用程序中所有DEBUG級別的日志信息將不被打印出來。(比定義低的級別不會被打印出來)
優先級高的將被打印出來。項目上生產環境時候建議把debug的日志級別重新調為warn或者更高,避免產生大量日志。

