[外包]!採用asp.net core 快速構建小型創業公司後臺管理系統(四.Log4Net的簡單配置)
阿新 • • 發佈:2018-11-23
接著上一章繼續嘮
這一章主要說一下
- Log4Net在我專案裡的配置,
另外群裡有人說serilog是最好用的,這個我也用過,感覺就那樣吧,以前還自己寫log
一.基礎配置類
infrastructure下直接一個Log4Net配置檔案
程式碼如下:
/// <summary> /// 日誌服務 /// </summary> public class Log4Net { /// <summary> /// 定義日誌容器 /// </summary>private static ILoggerRepository _repository = LogManager.CreateRepository(TbConstant.Log4RepositoryKey); /// <summary> /// 定義日誌配置檔案 /// </summary> private static FileInfo LogConfig = new FileInfo(ConfigLocator.Instance[TbConstant.Log4netKey]);/// <summary> /// 定義介面引數 /// </summary> /// <returns></returns> private static ILog SetLog() { var _MethodName = string.Empty; try { StackFrame _Call = new StackFrame(2); _MethodName= string.Format("{0}.{1}", _Call.GetMethod().ReflectedType.FullName, _Call.GetMethod().Name); var _St = new StackTrace().GetFrames(); foreach (var _item in _St) { if (_item.GetMethod().DeclaringType.ToString().EndsWith("Exception") && _St.Length > 2) { _MethodName = string.Format("{0}.{1}", _item.GetMethod().ReflectedType.FullName, _item.GetMethod().Name); continue; } } } catch { } XmlConfigurator.Configure(_repository, LogConfig); return LogManager.GetLogger(_repository.Name, _MethodName); } #region 異常日誌 /// <summary> /// 異常日誌 /// </summary> /// <param name="msg">錯誤資訊</param> public static void Debug(object msg) { SetLog().Debug(msg); } /// <summary> /// 異常日誌 /// </summary> /// <param name="msg">錯誤資訊</param> /// <param name="ex">異常資訊</param> public static void Debug(object msg, Exception ex) { SetLog().Debug(msg, ex); } #endregion #region 錯誤日誌 /// <summary> /// 錯誤日誌 /// </summary> /// <param name="msg">錯誤資訊</param> public static void Error(object msg) { SetLog().Error(msg); } /// <summary> /// 錯誤日誌 /// </summary> /// <param name="msg">錯誤資訊</param> /// <param name="ex">異常資訊</param> public static void Error(object msg, Exception ex) { SetLog().Error(msg, ex); } #endregion #region 資料日誌 /// <summary> /// 資料日誌 /// </summary> /// <param name="msg">錯誤資訊</param> public static void Info(object msg) { SetLog().Info(msg); } /// <summary> /// 資料日誌 /// </summary> /// <param name="msg">錯誤資訊</param> /// <param name="ex">異常資訊</param> public static void Info(object msg, Exception ex) { SetLog().Info(msg, ex); } #endregion #region 警告日誌 /// <summary> /// 警告日誌 /// </summary> /// <param name="msg">錯誤資訊</param> public static void Warn(object msg) { SetLog().Warn(msg); } /// <summary> /// 警告日誌 /// </summary> /// <param name="msg">錯誤資訊</param> /// <param name="ex">異常資訊</param> public static void Warn(object msg, Exception ex) { SetLog().Warn(msg, ex); } #endregion }
主要說一下這兩句
/// <summary> /// 定義日誌容器 /// </summary> private static ILoggerRepository _repository = LogManager.CreateRepository(TbConstant.Log4RepositoryKey); /// <summary> /// 定義日誌配置檔案 /// </summary> private static FileInfo LogConfig = new FileInfo(ConfigLocator.Instance[TbConstant.Log4netKey]);
CreateRepository裡傳入自定義key
第二句傳入log4net配置檔案路徑
如圖:
程式碼如下:配置還是老配置
<?xml version="1.0" encoding="utf-8" ?> <configuration> <log4net> <!--錯誤日誌--> <appender name="ErrorRollingFileAppender" type="log4net.Appender.RollingFileAppender"> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <param name="File" value="Log/Error/" /> <param name="AppendToFile" value="true" /> <param name="rollingStyle" value="Date" /> <param name="datePattern" value="yyyy-MM-dd.'error.log'" /> <param name="staticLogFileName" value="false" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%n%n%n記錄時間:%date %n日誌級別: %-5level %n類及方法:%logger %n描述:%message %newline%newline" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="ERROR" /> <param name="LevelMax" value="ERROR" /> </filter> </appender> <!--警告日誌--> <appender name="WarnRollingFileAppender" type="log4net.Appender.RollingFileAppender"> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <param name="File" value="Log/Warn/" /> <param name="AppendToFile" value="true" /> <param name="rollingStyle" value="Date" /> <param name="datePattern" value="yyyy-MM-dd.'warn.log'" /> <param name="staticLogFileName" value="false" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%n%n%n記錄時間:%date %n日誌級別: %-5level %n類及方法:%logger %n描述:%message %newline%newline" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="WARN" /> <param name="LevelMax" value="WARN" /> </filter> </appender> <!--資料日誌--> <appender name="InfoRollingFileAppender" type="log4net.Appender.RollingFileAppender"> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <param name="File" value="Log/Info/" /> <param name="AppendToFile" value="true" /> <param name="rollingStyle" value="Date" /> <param name="datePattern" value="yyyy-MM-dd.'Info.log'" /> <param name="staticLogFileName" value="false" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%n%n%n記錄時間:%date %n日誌級別: %-5level %n類及方法:%logger %n描述:%message %newline%newline" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="INFO" /> <param name="LevelMax" value="INFO" /> </filter> </appender> <!--異常日誌--> <appender name="DebugRollingFileAppender" type="log4net.Appender.RollingFileAppender"> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <param name="File" value="Log/Debug/" /> <param name="AppendToFile" value="true" /> <param name="rollingStyle" value="Date" /> <param name="datePattern" value="yyyy-MM-dd.'debug.log'" /> <param name="staticLogFileName" value="false" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%n%n%n記錄時間:%date %n日誌級別: %-5level %n類及方法:%logger %n描述:%message %newline%newline" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="DEBUG" /> <param name="LevelMax" value="DEBUG" /> </filter> </appender> <root> <level value="DEBUG" /> <!--檔案形式記錄日誌--> <appender-ref ref="ErrorRollingFileAppender" /> <appender-ref ref="DebugRollingFileAppender" /> <appender-ref ref="InfoRollingFileAppender" /> <appender-ref ref="WarnRollingFileAppender" /> </root> </log4net> </configuration>
二.測試結果
在你想記錄日至的地方,直接用Log4Net點他的四種日誌型別,Info,Error,Warn,Debug
他會在你專案根目錄下生成Log資料夾,幷包含四種類型日誌,按日期劃分
日誌內容如下:
日誌記錄這塊我就講到這裡
另外今天我對這個專案加了quartz計劃任務管理模組,還加了報表匯出
這個內容就下一章嘮吧
下章內容
- quartz計劃任務管理
- 許可權模組
- 備註:專案瀏覽地址:http://xingchenbeta.52expo.top/Welcome
- 使用者名稱 admin 密碼 123456
- 不要使用admin 使用者測試許可權,不要禁用admin使用者