<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/> </startup> <log4net> <root> <priority value="ALL" /> <appender-ref ref="RollingLogFileAppender" /> <appender-ref ref="RollingLogWarnFileAppender"/> <appender-ref ref="RollingLogFatalFileAppender"/> <appender-ref ref="RollingLogInfoFileAppender"/> <!--<appender-ref ref="ColoredConsoleAppender" />--> </root> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="Log\\Error\\" /> <param name="AppendToFile" value="true" /> <param name="MaxFileSize" value="10240" /> <param name="MaxSizeRollBackups" value="100" /> <param name="StaticLogFileName" value="false" /> <param name="DatePattern" value="yyyy_MM_dd'.log'" /> <param name="RollingStyle" value="Date" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%r %date [%thread] %-5level- %message%newline" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <levelMin value="ERROR" /> <levelMax value="ERROR" /> </filter> </appender> <appender name="RollingLogWarnFileAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="Log\\Warn\\" /> <param name="AppendToFile" value="true" /> <param name="MaxFileSize" value="10240" /> <param name="MaxSizeRollBackups" value="100" /> <param name="StaticLogFileName" value="false" /> <param name="DatePattern" value="yyyy_MM_dd'.log'" /> <param name="RollingStyle" value="Date" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%r %date [%thread] %-5level- %message%newline" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <levelMin value="WARN" /> <levelMax value="WARN" /> </filter> </appender> <appender name="RollingLogFatalFileAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="Log\\Fatal\\" /> <param name="AppendToFile" value="true" /> <param name="MaxFileSize" value="10240" /> <param name="MaxSizeRollBackups" value="100" /> <param name="StaticLogFileName" value="false" /> <param name="DatePattern" value="yyyy_MM_dd'.log'" /> <param name="RollingStyle" value="Date" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%r %date [%thread] %-5level- %message%newline" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <levelMin value="FATAL" /> <levelMax value="FATAL" /> </filter> </appender> <appender name="RollingLogInfoFileAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="Log\\Info\\" /> <param name="AppendToFile" value="true" /> <param name="MaxFileSize" value="10240" /> <param name="MaxSizeRollBackups" value="100" /> <param name="StaticLogFileName" value="false" /> <param name="DatePattern" value="yyyy_MM_dd'.log'" /> <param name="RollingStyle" value="Date" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%r %date [%thread] %-5level- %message%newline" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <levelMin value="INFO" /> <levelMax value="INFO" /> </filter> </appender> <!--<appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender"> <mapping> <level value="FATAL" /> <foreColor value="Red, HighIntensity" /> </mapping> <mapping> <level value="ERROR" /> <foreColor value="Red" /> </mapping> <mapping> <level value="WARN" /> <foreColor value="Yellow" /> </mapping> <mapping> <level value="INFO" /> <foreColor value="White" /> </mapping> <mapping> <level value="DEBUG" /> <foreColor value="Green" /> </mapping> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%r %date [%thread] %-5level- %message%newline" /> </layout> </appender>--> </log4net> </configuration>
使用
private static readonly ILog logInfo = LogManager.GetLogger("loginfo"); static LoggingHelper() { IntiLocalLog(); } /// <summary> /// 记录严重错误日志 /// </summary> /// <param name="message">消息内容</param> /// <param name="ex">异常信息</param> /// <param name="isWriteDebug">是否在output输出</param> public static void Fatal(string message, Exception ex = null, bool isWriteDebug = true) { Task.Factory.StartNew(() => { logInfo.Fatal(message, ex); }).ContinueWith((t) => { LoggingHelper.Error("日志严重错误信息记录错误" + t.Exception.InnerException.GetType().Name); }, TaskContinuationOptions.OnlyOnFaulted); } /// <summary> /// 记录错误日志 /// </summary> /// <param name="message">消息内容</param> /// <param name="ex">异常信息</param> /// <param name="isWriteDebug">是否在output输出</param> public static void Error(string message, Exception ex = null, bool isWriteDebug = true) { Task.Factory.StartNew(() => { logInfo.Error(message, ex); }).ContinueWith((t) => { LoggingHelper.Error("日志异常信息记录错误" + t.Exception.InnerException.GetType().Name); }, TaskContinuationOptions.OnlyOnFaulted); } /// <summary> /// 记录警告日志 /// </summary> /// <param name="message">消息内容</param> /// <param name="ex">异常信息</param> /// <param name="isWriteDebug">是否在output输出</param> public static void Warn(string message, Exception ex = null, bool isWriteDebug = true) { Task.Factory.StartNew(() => { logInfo.Warn(message, ex); }).ContinueWith((t) => { LoggingHelper.Error("日志警告信息记录错误" + t.Exception.InnerException.GetType().Name); }, TaskContinuationOptions.OnlyOnFaulted); } /// <summary> /// 记录信息日志 /// </summary> /// <param name="message">消息内容</param> /// <param name="ex">异常信息</param> /// <param name="isWriteDebug">是否在output输出</param> public static void Info(string message, Exception ex = null, bool isWriteDebug = true) { Task.Factory.StartNew(() => { logInfo.Info(message, ex); }).ContinueWith((t) => { LoggingHelper.Error("日志信息记录错误" + t.Exception.InnerException.GetType().Name); }, TaskContinuationOptions.OnlyOnFaulted); } /// <summary> /// 记录调试日志 /// </summary> /// <param name="message">消息内容</param> public static void Debug(string message) { Task.Factory.StartNew(() => { logInfo.Debug(message); }).ContinueWith((t) => { LoggingHelper.Error("日志调试信息记录错误" + t.Exception.InnerException.GetType().Name); }, TaskContinuationOptions.OnlyOnFaulted); } #region 私有方法 private static void IntiLocalLog() { log4net.Config.XmlConfigurator.Configure(); } #endregion
文章评论