好記性不如爛筆頭,此次是由衷的感覺到了!html
log4net 是一個很好用的日誌記錄工具,引用入項目中,如何查看項目內部運行狀況,如何快速定位異常信息,好的日誌記錄能幫很大的忙;app
log4net 很好用,快速上手,配置簡單,但是 (捂臉)本身配置就是配不上啊!!!!由於不想解讀源碼,只想快速配置好進行讀取記錄,哎,難死了。。。。。。工具
可是功夫不負有心人,只要功夫深,鐵棒磨成針!在本身堅持之下,終於配置完成了,可以生成日誌,進行查看了! 不說了,開始記錄:測試
1、單項目單獨使用spa
一、 準備 log4net.dll(或者在 Vs 中搜索Nuget 程序包,下載 log4net 管理包)添加引用。線程
二、引用完成以後,項目引用中有顯示剛纔操做dll3d
三、添加AssemblyInfo 資源信息;( [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)] )日誌
四、添加log4net.config文件,右鍵 ---》編輯文件屬性:始終複製(通常.config 文件系統會默認始終複製屬性,防止特殊狀況,檢查處理一下。) code
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </configSections> <log4net> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <!--日誌存放位置 ~/..--> <file value="log\" /> <!--文件命名方式--> <datePattern value="yyyy-MM-dd".txt"" /> <!--追加到文本末尾--> <appendToFile value="true" /> <rollingStyle value="Date" /> <staticLogFileName value="false" /> <maxSizeRollBackups value="20" /> <!--最多產生的日誌文件數,超過則只保留最新的n個。設定值value="-1"爲不限文件數--> <param name="MaxSizeRollBackups" value="30" /> <layout type="log4net.Layout.PatternLayout"> <!--%n日誌時間:%d [%t] %n日誌級別:%-5p %n消息描述:%c [%x] %n%m %n--> <!--%n異常時間:%d [%t] %n異常級別:%-5p %n異常位置:[%thread] 代碼位置(%file:%line) %n消息描述:%message%n異常:%exception%n%n--> <param name="ConversionPattern" value="%d [%thread] %-5p %message (%file:%line) %n" /> </layout> </appender>
<!--識別的log4net配置名稱--> <logger name="loginfo"> <level value="ALL" /> <appender-ref ref="RollingLogFileAppender" /> </logger> </log4net> </configuration>
四、項目使用測試!xml
2、封裝log4net 到公用幫助類庫中
一、在公用幫助類庫中,添加 log4net.dll 引用,引用方式同上;
二、在公用幫助類庫中,添加資源引用 AssemblyInfo.cs 添加log4net.config 配置讀取信息;方式同上添加方式。
三、封裝Log4net 幫助類(LoggerHelper.cs) --看須要本身拓展
using log4net; using System; public class LogerHelper { #region private static ILog _LoggerInfo; private static ILog LogInfo { get { if (_LoggerInfo == null) { _LoggerInfo = log4net.LogManager.GetLogger("loginfo"); } return _LoggerInfo; } set { value = _LoggerInfo; } } #endregion public LogerHelper(Type type) { LogInfo = LogManager.GetLogger(type); } static LogerHelper() { } public static void SetConfig() { log4net.Config.XmlConfigurator.Configure(); } public static void SetConfig(FileInfo configFile) { log4net.Config.XmlConfigurator.Configure(configFile); } /// <summary> /// Log4日誌Error /// </summary> /// <param name="msg"></param> /// <param name="ex"></param> public static void Error(Exception ex = null) { Error("出現異常!", ex); } /// <summary> /// Log4日誌 /// </summary> /// <param name="msg"></param> /// <param name="ex"></param> public static void Error(string msg = "出現異常", Exception ex = null) { try { if (LogInfo.IsErrorEnabled) { LogInfo.Error(msg, ex); } } catch { } } /// <summary> /// Log4日誌Warn /// </summary> /// <param name="msg"></param> public static void Warn(string msg) { //Console.WriteLine(msg); LogInfo.Warn(msg); } /// <summary> /// Log4日誌Info /// </summary> /// <param name="msg"></param> public static void Info(string msg) { //Console.WriteLine(msg); LogInfo.Info(msg); } /// <summary> /// Log4日誌Debug /// </summary> /// <param name="msg"></param> public static void Debug(string msg) { //Console.WriteLine(msg); LogInfo.Debug(msg); } }
四、工具類封裝loghelper 後,在輸出/展現應用程序中,須要添加 log4net.config 文件,若是不添加,將不會記錄日誌:
好比我要在 console 控制檯應用程序中使用日誌,使用log4net 記錄輸出日誌時,須要在console 應用程序中添加 log4net.config 文件。
五、日誌樣例:
3、總結
一、引用log4net.dll 後,看在哪使用,若是單獨使用,在當前應用程序的資源文件AssemblyInfo.cs 中添加 ;
(若是你有公用的工具類庫,放置封裝log4net 的Helper信息時,在log4netHelper 所在應用程序資源文件AssemblyInfo.cs 中添加 ),
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]
二、在最終的輸出應用程序中添加 log4net.config,設置文件屬性爲始終複製;
三、log4net.config 中內容記錄展現樣式:(log4net.Layout.PatternLayout --》ConversionPattern 配置)
%m[%message] : 輸出的日誌消息
%n : 換行
%d[%datetime] : 輸出當前語句運行的時刻
%r : 輸出程序從運行到執行到當前語句時消耗的毫秒數
%d : 當前語句所在的線程ID
%p : 日誌的當前優先級別
%c :當前日誌對象的名稱
%L : 輸出語句所在的行號
%F :輸出語句所在的文件名
%-數字 :表示該項的最小長度,若是不夠,則用空格填充
本文log4net.config 文件知足通常須要,想配置更多,功能更全,建議瞭解一下log4net.Config 節點參數。
配置到類庫中進行調用參考:http://grim1980.blog.sohu.com/255519333.html
配置文件log4net.config 配置內容解說:http://www.javashuo.com/article/p-hwczyyyt-gu.html
若有不合理之處,請你們多多指教。
若是您以爲本文對您有幫助,歡迎點擊「收藏」按鈕!(/:微笑)歡迎轉載,轉載請註明出處。