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} 【异常类型】:{1} 【异常信息】:{2} 【堆栈调用】:{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 和 直接写;就会看到如下