用 Log4Net 三步实现 .Net Core 类库 分日志等级(不同文件目录)存日志

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     /// 
  9     /// Log4Net Helper 2018-12-16 19:15:00  
 10     /// 日志等级:OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL
 11     /// 
 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         /// 
 28         /// 调试信息
 29         /// 
 30         /// 
 31         /// 
 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         /// 
 44         /// 一般信息
 45         /// 
 46         /// 
 47         /// 
 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         /// 
 60         /// 警告
 61         /// 
 62         /// 
 63         /// 
 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         /// 
 76         /// 一般错误
 77         /// 
 78         /// 
 79         /// 
 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         /// 
 92         /// 致命错误
 93         /// 
 94         /// 
 95         /// 
 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         /// 
109         /// 自定义返回格式
110         /// 
111         /// 
112         /// 
113         /// 
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 }
View Code

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     
  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       
 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     
 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       
 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     
 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       
 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     
 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       
 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     
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       
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     
150   log4net>
151 configuration>
View Code

4,运行项目,测试 除以0 和 直接写;就会看到如下

   用 Log4Net 三步实现 .Net Core 类库 分日志等级(不同文件目录)存日志_第1张图片

用 Log4Net 三步实现 .Net Core 类库 分日志等级(不同文件目录)存日志_第2张图片

转载于:https://www.cnblogs.com/recordman/p/10128163.html

你可能感兴趣的:(用 Log4Net 三步实现 .Net Core 类库 分日志等级(不同文件目录)存日志)