下面我給你們介紹一下記日雜-log4net組件使用,當程序發佈有服務器上,有時出現了錯誤, 都不知道出如今那,因此log4net組件很好解決這個問題。服務器
一、添加開發包,並對log4net.dll的引用mvc
二、在Web.Config (或App.Config)添加配置,app
<configSections><!--必定要在全部節點以前-->調試
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>日誌
</configSections>orm
三、新增log4net 節點對象
<log4net>開發
<root>io
<!-- 日誌級別 OFF(關閉),FATAL,ERROR,WARN,INFO,DEBUG,ALL(所有顯示) -->配置
<level value="ALL" />
<appender-ref ref="RollingFileTracer" />
</root>
<!-- Print only messages of level DEBUG or above in the packages -->
<appender name="RollingFileTracer" type="log4net.Appender.RollingFileAppender,log4net"> <!--RollingFileAppender 表示滾動日誌信息-->
<param name="File" value="App_Data/Log/" /> <!--日誌信息保存的位置-->
<param name="AppendToFile" value="true" /> <!--是不是附加文件,true爲在原來文件上追加內容-->
<param name="RollingStyle" value="Date" /> <!--文件根據什麼來滾動儲存, 這裏是根據時間-->
<param name="MaxSizeRollBackups" value="10" /> <!--最多有多少個文件,當大於這個數, 就會把最早的文件刪除-->
<param name="MaximumFileSize" value="1MB" /> <!--每一個文件最大大小-->
<param name="DatePattern" value=""Logs_"yyyyMMdd".txt"" /> <!--日誌文件名格式-->
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /> <!--輸出格式-->
</layout>
</appender>
</log4net>
能夠對訪問級別進行控制, 調用時能夠設爲all 這樣調試信息都會輸出到日誌文件中, 待程序穩定後,設爲Warn 這樣調試信息不會輸出到日誌文件中, 同時也不用修改代碼
四、初始化:在Global的Application_Start中寫(程序啓動的時候讀取配置)
log4net.Config.XmlConfigurator.Configure();
注意:必定要加入這個, 沒有加雖然8不會報錯可是不會任何效果
五、在Global的Application_Error記錄未處理的異常信息
例:ILog ilog = LogManager.GetLogger(typeof(Global));
ilog.Error("系統發生未處理的異常信息",Context.Error);
在mvc裏面能夠手動添加這個方法
protected void Application_Error(object sender, EventArgs e)
{
//當系統中發生未處理的異常信息, 這個方法會被調用
ILog ilog = LogManager.GetLogger(typeof(MvcApplication));
ilog.Error("系統發生未處理的異常信息", Context.Error);
}
在要打印日誌的地方LogManager.GetLogger(typeof(Program)).Debug("信息");
經過LogManager.GetLogger傳遞要記錄的日誌類類名得到這個類的ILog(這樣在日誌文件中就能看到這條日誌是哪一個類輸出的了),而後調用Debug方法輸出消息。
由於一個類內部不止一個地方要打印日誌,因此通常把ILog聲明爲一個static字段。
輸出錯誤信息用ILog.Error方法,第二個參數能夠傳遞Exception對象。log.Error("***錯誤"+ex),log.Error("***錯誤",ex)
例:
private static ILog ilog = LogManager.GetLogger(typeof(WebForm1));
protected void Page_Load(object sender, EventArgs e)
{
ilog.Debug("調試信息");
ilog.Info("信息");
ilog.Warn("警告信息");
ilog.Error("錯誤信息");
ilog.Fatal("嚴重信息");
}