1,建立.Net Core Web 項目,引入 log4net
2,建立類庫,添加如下 helper方法

1 using log4net; 2 using log4net.Config; 3 using System; 4 using System.IO; 5 6 namespace Chf.Log 7 { 8 /// <summary> 9 /// Log4Net Helper 2018-12-16 19:15:00 10 /// 日志等級:OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL 11 /// </summary> 12 public sealed class LogHelper 13 { 14 private static ILog logger; 15 16 static LogHelper() 17 { 18 if (logger == null) 19 { 20 var repository = LogManager.CreateRepository("Chf.Web"); 21 //指定配置文件 22 XmlConfigurator.Configure(repository, new FileInfo("Config//log4netTwo.config")); 23 logger = LogManager.GetLogger(repository.Name, "RollingLogFileAppender"); 24 } 25 } 26 27 /// <summary> 28 /// 調試信息 29 /// </summary> 30 /// <param name="message"></param> 31 /// <param name="exception"></param> 32 public static void Debug(string message, Exception exception = null) 33 { 34 if (logger.IsDebugEnabled) 35 { 36 if (exception == null) 37 logger.Debug(message); 38 else 39 logger.Debug(FormartLog(message, exception)); 40 } 41 } 42 43 /// <summary> 44 /// 一般信息 45 /// </summary> 46 /// <param name="message"></param> 47 /// <param name="exception"></param> 48 public static void Info(string message, Exception exception = null) 49 { 50 if (logger.IsInfoEnabled) 51 { 52 if (exception == null) 53 logger.Info(message); 54 else 55 logger.Info(FormartLog(message, exception)); 56 } 57 } 58 59 /// <summary> 60 /// 警告 61 /// </summary> 62 /// <param name="message"></param> 63 /// <param name="exception"></param> 64 public static void Warn(string message, Exception exception = null) 65 { 66 if (logger.IsWarnEnabled) 67 { 68 if (exception == null) 69 logger.Warn(message); 70 else 71 logger.Warn(FormartLog(message, exception)); 72 } 73 } 74 75 /// <summary> 76 /// 一般錯誤 77 /// </summary> 78 /// <param name="message"></param> 79 /// <param name="exception"></param> 80 public static void Error(string message, Exception exception = null) 81 { 82 if (logger.IsErrorEnabled) 83 { 84 if (exception == null) 85 logger.Error(message); 86 else 87 logger.Error(FormartLog(message, exception)); 88 } 89 } 90 91 /// <summary> 92 /// 致命錯誤 93 /// </summary> 94 /// <param name="message"></param> 95 /// <param name="exception"></param> 96 public static void Fatal(string message, Exception exception = null) 97 { 98 if (logger.IsFatalEnabled) 99 { 100 if (exception == null) 101 logger.Fatal(message); 102 else 103 logger.Fatal(FormartLog(message, exception)); 104 } 105 } 106 107 108 /// <summary> 109 /// 自定義返回格式 110 /// </summary> 111 /// <param name="throwMsg"></param> 112 /// <param name="ex"></param> 113 /// <returns></returns> 114 private static string FormartLog(string throwMsg, Exception ex) 115 { 116 return string.Format("【自定義內容】:{0} \r\n【異常類型】:{1} \r\n【異常信息】:{2} \r\n【堆棧調用】:{3}", new object[] { throwMsg, ex.GetType().Name, ex.Message, ex.StackTrace }); 117 } 118 } 119 }
3,Web項目,添加如下配置文件

1 <?xml version="1.0" encoding="utf-8"?> 2 <configuration> 3 <configSections> 4 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> 5 </configSections> 6 7 <log4net> 8 <!-- Debug 將日志以回滾文件的形式寫到文件中 --> 9 <appender name="RollingFileDebug" type="log4net.Appender.RollingFileAppender"> 10 <!-- 日志文件存放位置,可以為絕對路徑也可以為相對路徑 --> 11 <file value="Log\\Debug\\" /> 12 <!-- 將日志信息追加到已有的日志文件中--> 13 <appendToFile value="true" /> 14 <param name="MaxFileSize" value="10240"/> 15 <param name="MaxSizeRollBackups" value="100"/> 16 <!-- 最小鎖定模式,以允許多個進程可以寫入同一個文件 --> 17 <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 18 <!-- 指定按日期切分日志文件 --> 19 <rollingStyle value="Date" /> 20 <!-- 日志文件的命名規則 --> 21 <datePattern value="yyyy-MM-dd_HH_mm_ss".log"" /> 22 <!-- 當將日期作為日志文件的名字時,必須將staticLogFileName的值設置為false --> 23 <staticLogFileName value="false" /> 24 <layout type="log4net.Layout.PatternLayout"> 25 <conversionPattern value="【異常時間】:%date【線程ID】:%thread%newline【異常級別】:%5level%newline%message%newline--------------------------------------------------------------------%newline" /> 26 </layout> 27 <filter type="log4net.Filter.LevelRangeFilter"> 28 <param name="LevelMin" value="Debug" /> 29 <param name="LevelMax" value="Debug" /> 30 </filter> 31 </appender> 32 33 <!-- Info 將日志以回滾文件的形式寫到文件中 --> 34 <appender name="RollingFileInfo" type="log4net.Appender.RollingFileAppender"> 35 <!-- 日志文件存放位置,可以為絕對路徑也可以為相對路徑 --> 36 <file value="Log\\Info\\" /> 37 <!-- 將日志信息追加到已有的日志文件中--> 38 <appendToFile value="true" /> 39 <param name="MaxFileSize" value="10240"/> 40 <param name="MaxSizeRollBackups" value="100"/> 41 <!-- 最小鎖定模式,以允許多個進程可以寫入同一個文件 --> 42 <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 43 <!-- 指定按日期切分日志文件 --> 44 <rollingStyle value="Date" /> 45 <!-- 日志文件的命名規則 --> 46 <datePattern value="yyyy-MM-dd_HH_mm_ss".log"" /> 47 <!-- 當將日期作為日志文件的名字時,必須將staticLogFileName的值設置為false --> 48 <staticLogFileName value="false" /> 49 <layout type="log4net.Layout.PatternLayout"> 50 <conversionPattern value="【異常時間】:%date【線程ID】:%thread%newline【異常級別】:%5level%newline%message%newline--------------------------------------------------------------------%newline" /> 51 </layout> 52 <filter type="log4net.Filter.LevelRangeFilter"> 53 <param name="LevelMin" value="Info" /> 54 <param name="LevelMax" value="Info" /> 55 </filter> 56 </appender> 57 58 <!-- Warn 將日志以回滾文件的形式寫到文件中 --> 59 <appender name="RollingFileWarn" type="log4net.Appender.RollingFileAppender"> 60 <!-- 日志文件存放位置,可以為絕對路徑也可以為相對路徑 --> 61 <file value="Log\\Warn\\" /> 62 <!-- 將日志信息追加到已有的日志文件中--> 63 <appendToFile value="true" /> 64 <param name="MaxFileSize" value="10240"/> 65 <param name="MaxSizeRollBackups" value="100"/> 66 <!-- 最小鎖定模式,以允許多個進程可以寫入同一個文件 --> 67 <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 68 <!-- 指定按日期切分日志文件 --> 69 <rollingStyle value="Date" /> 70 <!-- 日志文件的命名規則 --> 71 <datePattern value="yyyy-MM-dd_HH_mm_ss".log"" /> 72 <!-- 當將日期作為日志文件的名字時,必須將staticLogFileName的值設置為false --> 73 <staticLogFileName value="false" /> 74 <layout type="log4net.Layout.PatternLayout"> 75 <conversionPattern value="【異常時間】:%date【線程ID】:%thread%newline【異常級別】:%5level%newline%message%newline--------------------------------------------------------------------%newline" /> 76 </layout> 77 <filter type="log4net.Filter.LevelRangeFilter"> 78 <param name="LevelMin" value="Warn" /> 79 <param name="LevelMax" value="Warn" /> 80 </filter> 81 </appender> 82 83 <!-- Error 將日志以回滾文件的形式寫到文件中 --> 84 <appender name="RollingFileError" type="log4net.Appender.RollingFileAppender"> 85 <!-- 日志文件存放位置,可以為絕對路徑也可以為相對路徑 --> 86 <file value="Log\\Error\\" /> 87 <!-- 將日志信息追加到已有的日志文件中--> 88 <appendToFile value="true" /> 89 <param name="MaxFileSize" value="10240"/> 90 <param name="MaxSizeRollBackups" value="100"/> 91 <!-- 最小鎖定模式,以允許多個進程可以寫入同一個文件 --> 92 <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 93 <!-- 指定按日期切分日志文件 --> 94 <rollingStyle value="Date" /> 95 <!-- 日志文件的命名規則 --> 96 <datePattern value="yyyy-MM-dd_HH_mm_ss".log"" /> 97 <!-- 當將日期作為日志文件的名字時,必須將staticLogFileName的值設置為false --> 98 <staticLogFileName value="false" /> 99 <layout type="log4net.Layout.PatternLayout"> 100 <conversionPattern value="【異常時間】:%date【線程ID】:%thread%newline【異常級別】:%5level%newline%message%newline--------------------------------------------------------------------%newline" /> 101 </layout> 102 <filter type="log4net.Filter.LevelRangeFilter"> 103 <param name="LevelMin" value="Error" /> 104 <param name="LevelMax" value="Error" /> 105 </filter> 106 </appender> 107 108 <!-- Fatal 將日志以回滾文件的形式寫到文件中 --> 109 <appender name="RollingFileFatal" type="log4net.Appender.RollingFileAppender"> 110 <!-- 日志文件存放位置,可以為絕對路徑也可以為相對路徑 --> 111 <file value="Log\\Fatal\\" /> 112 <!-- 將日志信息追加到已有的日志文件中--> 113 <appendToFile value="true" /> 114 <param name="MaxFileSize" value="10240"/> 115 <param name="MaxSizeRollBackups" value="100"/> 116 <!-- 最小鎖定模式,以允許多個進程可以寫入同一個文件 --> 117 <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 118 <!-- 指定按日期切分日志文件 --> 119 <rollingStyle value="Date" /> 120 <!-- 日志文件的命名規則 --> 121 <datePattern value="yyyy-MM-dd_HH_mm_ss".log"" /> 122 <!-- 當將日期作為日志文件的名字時,必須將staticLogFileName的值設置為false --> 123 <staticLogFileName value="false" /> 124 <layout type="log4net.Layout.PatternLayout"> 125 <conversionPattern value="【異常時間】:%date【線程ID】:%thread%newline【異常級別】:%5level%newline%message%newline--------------------------------------------------------------------%newline" /> 126 </layout> 127 <filter type="log4net.Filter.LevelRangeFilter"> 128 <param name="LevelMin" value="Fatal" /> 129 <param name="LevelMax" value="Fatal" /> 130 </filter> 131 </appender> 132 133 <logger name="RollingLogFileAppender"> 134 <level value="ALL" /> 135 <appender-ref ref="RollingFileDebug" /> 136 <appender-ref ref="RollingFileInfo" /> 137 <appender-ref ref="RollingFileWarn" /> 138 <appender-ref ref="RollingFileError" /> 139 <appender-ref ref="RollingFileFatal" /> 140 </logger> 141 142 <!--<root> 143 控制級別,由低到高:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF 144 比如定義級別為INFO,則INFO級別向下的級別,比如DEBUG日志將不會被記錄 145 如果沒有定義LEVEL的值,則缺省為DEBUG 146 <level value="ALL" /> 147 按日期切分日志文件,並將日期作為日志文件的名字 148 <appender-ref ref="RollingFileAppenderNameByDate" /> 149 </root>--> 150 </log4net> 151 </configuration>
4,運行項目,測試 除以0 和 直接寫;就會看到如下