Log4net使用探究


第一步:

通过Nuget package 搜索Apache Log4net安装

第二步:

在项目Global.asax文件中添加读取 配置文件

第三步:

编写Loghelper 文件

 1 public class LogNetHelper
 2     {
 3         private static ILog iLog { get; set; }
 4         //默认Info等级
 5         public static void Write(string message)
 6         {
 7             SetLogLevel(LogLevel.Info, null).Info(message);
 8         }
 9         //自定义
10         public static ILog GetInstance(LogLevel level)
11         {
12             return SetLogLevel(level,null);
13         }
14         //是否需要重新加载配置文件使用
15         private static ILog GetIlog(string configPath,string typeStr)
16         {
17             if (string.IsNullOrEmpty(configPath))
18             {
19                 iLog = log4net.LogManager.GetLogger(typeStr);
20             }
21             else
22             {
23                 iLog = log4net.LogManager.GetLogger(typeStr);
24                 log4net.Config.XmlConfigurator.Configure(new FileInfo(configPath));
25             }
26             return iLog;
27         }
28         //封装变化
29         private static ILog SetLogLevel(LogLevel level, string configPath)
30         {
31             ILog log;
32             switch (level)
33             {
34                 case LogLevel.Fatal:
35                     log = GetIlog(configPath, LogLevel.Fatal.ToString());
36                     break;
37                 case LogLevel.Error:
38                     log = GetIlog(configPath, LogLevel.Error.ToString());
39                     break;
40                 case LogLevel.Warn:
41                     log = GetIlog(configPath, LogLevel.Warn.ToString());
42                     break;
43                 case LogLevel.Debug:
44                     log = GetIlog(configPath, LogLevel.Debug.ToString());
45                     break;
46                 case LogLevel.Info:
47                     log = GetIlog(configPath, LogLevel.Info.ToString());
48                     break;
49                 default:
50                     log = GetIlog(configPath, LogLevel.Info.ToString());
51                     break;
52             }
53             return log;
54         }
55 56     }
57     //日志等级
58     public enum LogLevel
59     {
60         Fatal,
61         Error,
62         Warn,
63         Debug,
64         Info
65     }
66   
67 } 

第四步:

  1 <?xml version="1.0" encoding="UTF-8"?>
  2 "false">
  3 
  4   
  5   "LogFileAppenderByDate" type="log4net.Appender.RollingFileAppender" >
  6 
  7     
  8     "AppendToFile" value="true" />
  9     
 10     "LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />
 11     "StaticLogFileName" value="true" />
 12     
 13     "File" value="Logs\Error" />
 14     "DatePattern" value="yyyy-MM-dd.LOG" />
 15     "StaticLogFileName" value="false" />
 16     "RollingStyle" value="Date" />
 17     "log4net.Layout.PatternLayout">
 18       "ConversionPattern" value="时间:%d %n级别:%level %n类名:%c%n文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" />
 19     
 20   
 21 
 22   
 23   "LogFileAppenderBySize" type="log4net.Appender.RollingFileAppender" >
 24     
 25     "AppendToFile" value="true" />
 26     
 27     "LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />
 28 
 29     "StaticLogFileName" value="true" />
 30 
 31     
 32     "RollingStyle" value="Size" />
 33     "File" value="log.txt" />
 34     
 35     "MaximumFileSize" value="200KB"/>
 36     
 37     "MaxSizeRollBackups" value="2" />
 38 
 39     "StaticLogFileName" value="false" />
 40     "log4net.Layout.PatternLayout">
 41       "ConversionPattern" value="发生时间:%d %n事件级别:%level %n相关类名:%c%n程序文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" />
 42     
 43   
 44 
 45   
 46   "Fatal" type="log4net.Appender.RollingFileAppender" >
 47 
 48     
 49     "AppendToFile" value="true" />
 50     
 51     "LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />
 52     "StaticLogFileName" value="true" />
 53     
 54     "File" value="Logs\Fatal" />
 55     "DatePattern" value="yyyy-MM-dd.LOG" />
 56     "StaticLogFileName" value="false" />
 57     "RollingStyle" value="Date" />
 58     "log4net.Layout.PatternLayout">
 59       "ConversionPattern" value="时间:%d %n级别:%level %n类名:%c%n文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" />
 60     
 61     "log4net.Filter.LoggerMatchFilter">
 62       "Fatal" />
 63     
 64     "log4net.Filter.DenyAllFilter" />
 65   
 66 
 67   
 68   "Error" type="log4net.Appender.RollingFileAppender" >
 69 
 70     
 71     "AppendToFile" value="true" />
 72     
 73     "LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />
 74     "StaticLogFileName" value="true" />
 75     
 76     "File" value="Logs\Error" />
 77     "DatePattern" value="yyyy-MM-dd.LOG" />
 78     "StaticLogFileName" value="false" />
 79     "RollingStyle" value="Date" />
 80     "log4net.Layout.PatternLayout">
 81       "ConversionPattern" value="时间:%d %n级别:%level %n类名:%c%n文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" />
 82     
 83     "log4net.Filter.LoggerMatchFilter">
 84       "Error" />
 85     
 86     "log4net.Filter.DenyAllFilter" />
 87   
 88 
 89   
 90   "Warn" type="log4net.Appender.RollingFileAppender" >
 91 
 92     
 93     "AppendToFile" value="true" />
 94     
 95     "LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />
 96     "StaticLogFileName" value="true" />
 97     
 98     "File" value="Logs\Warn" />
 99     "DatePattern" value="yyyy-MM-dd.LOG" />
100     "StaticLogFileName" value="false" />
101     "RollingStyle" value="Date" />
102     "log4net.Layout.PatternLayout">
103       "ConversionPattern" value="时间:%d %n级别:%level %n类名:%c%n文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" />
104     
105     "log4net.Filter.LoggerMatchFilter">
106       "Warn" />
107     
108     "log4net.Filter.DenyAllFilter" />
109   
110 
111   
112   "Debug" type="log4net.Appender.RollingFileAppender" >
113 
114     
115     "AppendToFile" value="true" />
116     
117     "LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />
118     "StaticLogFileName" value="true" />
119     
120     "File" value="Logs\Debug" />
121     "DatePattern" value="yyyy-MM-dd.LOG" />
122     "StaticLogFileName" value="false" />
123     "RollingStyle" value="Date" />
124     "log4net.Layout.PatternLayout">
125       "ConversionPattern" value="时间:%d %n级别:%level %n类名:%c%n文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" />
126     
127     "log4net.Filter.LoggerMatchFilter">
128       "Debug" />
129     
130     "log4net.Filter.DenyAllFilter" />
131   
132 
133   
134   "Info" type="log4net.Appender.RollingFileAppender" >
135 
136     
137     "AppendToFile" value="true" />
138     
139     "LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />
140     "StaticLogFileName" value="true" />
141     
142     "File" value="Logs\Info" />
143     "DatePattern" value="yyyy-MM-dd.LOG" />
144     "StaticLogFileName" value="false" />
145     "RollingStyle" value="Date" />
146     "log4net.Layout.PatternLayout">
147       "ConversionPattern" value="时间:%d %n级别:%level %n类名:%c%n文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" />
148     
149     "log4net.Filter.LoggerMatchFilter">
150       "Info" />
151     
152     "log4net.Filter.DenyAllFilter" />
153   
154   
155   
156   
157   
158   
159   
160   
161   
162     "ALL" /> 
163     
164     ref ref="Fatal" />
165     ref ref="Error" />
166     ref ref="Warn" />
167     ref ref="Debug" />
168     ref ref="Info" />
169     
170     
171     
172     
173     
174     
175     
176     
177   
178 
179 

 实际上就是一个根logger,所有其它logger都默认继承它,

  • appender-ref 零个或多个 需要引用的appender
  • level 记录级别

> 定义日志的输出方式 name属性必须唯一,type属性必须指定

日志布局,type属性必须指定

 过滤器,type属性必须指定

更多需要参考资料:

Apache Log4net 官方文档建议通读 

csdn博友文章