日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET MVC 使用Log4Net在不同目录中记录不同类型的日志

發布時間:2025/3/11 asp.net 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET MVC 使用Log4Net在不同目录中记录不同类型的日志 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在上一篇文章中,實現了利用Log4Net記錄系統中出現的問題。如果同時還需要記錄用戶操作的監控日志,就需要一些修改

修改Web.Cofig配置文件 ,增加一個logger節點和appender節點,用于監控操作日志配置,并且設置不同的日志文件路徑,如下圖所示:

<log4net><!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL --><!-- Set root logger level to ERROR and its appenders --><!--<root><level value="ALL"/><appender-ref ref="ErrorLogger"/><appender-ref ref="ErrorLogger"/></root>--><!-- Print only messages of level DEBUG or above in the packages --><logger name="ErrorLogger"><!--這里進一步限制了日志級別,只有在大于等于DEBUG的情況下才會記錄日志--><level value="DEBUG"/><appender-ref ref="SysAppender"></appender-ref></logger><appender name="SysAppender" type="log4net.Appender.RollingFileAppender,log4net" ><!--日志放在項目的App_Data文件夾--><param name="File" value="Logs\\Error\\" /><!--日志以追加形式記錄--><param name="AppendToFile" value="true" /><!--日期作為回滾:日期排序--><param name="RollingStyle" value="Date" /><!--設置日志文件名稱的生成規則 --><param name="DatePattern" value="&quot;Logs_&quot;yyyyMMdd&quot;.txt&quot;" /><!--日志文件是否靜態:否--><param name="StaticLogFileName" value="false" /><!--日志格式的內容和布局--><layout type="log4net.Layout.PatternLayout,log4net"><param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /><param name="Header" value="&#13;&#10;----------------------header--------------------------&#13;&#10;" /><param name="Footer" value="&#13;&#10;----------------------footer--------------------------&#13;&#10;" /></layout></appender><logger name="CommonLogger"><!--這里進一步限制了日志級別,只有在大于等于DEBUG的情況下才會記錄日志--><level value="DEBUG"/><appender-ref ref="CommonAppender"></appender-ref></logger><appender name="CommonAppender" type="log4net.Appender.RollingFileAppender,log4net" ><!--日志放在項目的App_Data文件夾--><param name="File" value="Logs\\Common\\" /><!--日志以追加形式記錄--><param name="AppendToFile" value="true" /><!--日期作為回滾:日期排序--><param name="RollingStyle" value="Date" /><!--設置日志文件名稱的生成規則 --><param name="DatePattern" value="&quot;Logs_&quot;yyyyMMdd&quot;.txt&quot;" /><!--日志文件是否靜態:否--><param name="StaticLogFileName" value="false" /><!--日志格式的內容和布局--><layout type="log4net.Layout.PatternLayout,log4net"><param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /><param name="Header" value="&#13;&#10;----------------------header--------------------------&#13;&#10;" /><param name="Footer" value="&#13;&#10;----------------------footer--------------------------&#13;&#10;" /></layout></appender><appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net"><layout type="log4net.Layout.PatternLayout,log4net"><param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /></layout></appender></log4net>

修改Global.asax.cs中Application_Start()方法中原來的隊列代碼中的這句代碼,變為系統問題型日志,如下圖所示:?

ThreadPool.QueueUserWorkItem(o => {while (true){if (MyErrorAttribute.ExceptionQueue.Count > 0){Exception ex = MyErrorAttribute.ExceptionQueue.Dequeue();if (ex != null){log4net.ILog logger = log4net.LogManager.GetLogger("ErrorLogger");//修改為和WebConfig中<logger name="ErrorLogger">一樣logger.Error(ex.ToString());}else{Thread.Sleep(50);}}else{Thread.Sleep(50);}} });

在要監控用戶操作的地方,加上如下圖中的代碼,用來打印監控日志:

public class HomeController : Controller{public static log4net.ILog log = log4net.LogManager.GetLogger("CommonLogger");//定義為用戶監控日志,對應WebConifg中的<logger name="CommonLogger">public ActionResult About(){int result = 0;int x = 1, y = 0;result = x / y;//系統報錯日志ViewBag.Message = "Your application description page.";return View();}public ActionResult Contact(){log.Error("好像出錯了");//寫入自定義的普通監控日志ViewBag.Message = "Your contact page.";return View();}}

使用效果如下圖所示:

? ? ? ? ? ? ? ??

Common文件夾下的日志:?

?

Error文件夾下的日志:?

?

?總結:

Log4Net 有3個主要組件:loggers、appenders 和 layouts。這三個組件一起工作式使得開發者能夠根據信息類型和等級level記錄信息,以及在運行時控制信息的格式化和信息的的寫入位置(如控制臺、文件、內存、數據庫等)。過濾器幫助這些組件控制追加器(appender)的行為和把對象轉換成字符串的對象渲染。

Appender:可以將日志輸出到不同的地方,不同的輸出目標對應的不同的 Appender,如RollingFileAppender(滾動文件)、AdoNetAppender(數據庫)、SmtpAppender(郵件)等。

level(級別):標識這條日志信息的重要級別。None>Fatal>Error>Warn>DEBUG>INFO>ALL.設定一個level,那么低于這個level等級的日志是不會被寫到Appender中的。

Log4Net還可以設定多個Appender,可以實現同時將日志記錄到文件、數據、發送郵件等:可以設定不同的Appender的不同Level,可以實現普通級別都記錄到文件、Error以上級別都發送郵件:可以實現對不同的類設定不同Appender:開可以自定義 Appender,自己實現將Error信息發短信等。

?

?

?

?

?

總結

以上是生活随笔為你收集整理的ASP.NET MVC 使用Log4Net在不同目录中记录不同类型的日志的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。