Log4net使用探究
2024-10-20 11:30:05
第一步:
通过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 <log4net debug="false">
3
4 <!--按日期分割日志文件 一天一个-->
5 <appender name="LogFileAppenderByDate" type="log4net.Appender.RollingFileAppender" >
6
7 <!--是否续写-->
8 <param name="AppendToFile" value="true" />
9 <!--最小锁定模型以允许多个进程可以写入同一个文件-->
10 <param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />
11 <param name="StaticLogFileName" value="true" />
12 <!--保存路径-->
13 <param name="File" value="Logs\Error" />
14 <param name="DatePattern" value="yyyy-MM-dd.LOG" />
15 <param name="StaticLogFileName" value="false" />
16 <param name="RollingStyle" value="Date" />
17 <layout type="log4net.Layout.PatternLayout">
18 <param name="ConversionPattern" value="时间:%d %n级别:%level %n类名:%c%n文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" />
19 </layout>
20 </appender>
21
22 <!--按日志容量分割日志文件 10KB一个-->
23 <appender name="LogFileAppenderBySize" type="log4net.Appender.RollingFileAppender" >
24 <!--是否续写-->
25 <param name="AppendToFile" value="true" />
26 <!--最小锁定模型以允许多个进程可以写入同一个文件-->
27 <param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />
28
29 <param name="StaticLogFileName" value="true" />
30
31 <!--按照文件的大小进行变换日志文件-->
32 <param name="RollingStyle" value="Size" />
33 <param name="File" value="log.txt" />
34 <!--单个文件最大数量 好像只有在 按Size分割时有效-->
35 <param name="MaximumFileSize" value="200KB"/>
36 <!--保留的log文件数量 超过此数量后 自动删除之前的 好像只有在 按Size分割时有效-->
37 <param name="MaxSizeRollBackups" value="2" />
38
39 <param name="StaticLogFileName" value="false" />
40 <layout type="log4net.Layout.PatternLayout">
41 <param name="ConversionPattern" value="发生时间:%d %n事件级别:%level %n相关类名:%c%n程序文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" />
42 </layout>
43 </appender>
44
45 <!--按等级文件夹日志文件 一天一个-->
46 <appender name="Fatal" type="log4net.Appender.RollingFileAppender" >
47
48 <!--是否续写-->
49 <param name="AppendToFile" value="true" />
50 <!--最小锁定模型以允许多个进程可以写入同一个文件-->
51 <param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />
52 <param name="StaticLogFileName" value="true" />
53 <!--保存路径-->
54 <param name="File" value="Logs\Fatal" />
55 <param name="DatePattern" value="yyyy-MM-dd.LOG" />
56 <param name="StaticLogFileName" value="false" />
57 <param name="RollingStyle" value="Date" />
58 <layout type="log4net.Layout.PatternLayout">
59 <param name="ConversionPattern" value="时间:%d %n级别:%level %n类名:%c%n文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" />
60 </layout>
61 <filter type="log4net.Filter.LoggerMatchFilter">
62 <loggerToMatch value="Fatal" />
63 </filter>
64 <filter type="log4net.Filter.DenyAllFilter" />
65 </appender>
66
67 <!--按等级文件夹日志文件 一天一个-->
68 <appender name="Error" type="log4net.Appender.RollingFileAppender" >
69
70 <!--是否续写-->
71 <param name="AppendToFile" value="true" />
72 <!--最小锁定模型以允许多个进程可以写入同一个文件-->
73 <param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />
74 <param name="StaticLogFileName" value="true" />
75 <!--保存路径-->
76 <param name="File" value="Logs\Error" />
77 <param name="DatePattern" value="yyyy-MM-dd.LOG" />
78 <param name="StaticLogFileName" value="false" />
79 <param name="RollingStyle" value="Date" />
80 <layout type="log4net.Layout.PatternLayout">
81 <param name="ConversionPattern" value="时间:%d %n级别:%level %n类名:%c%n文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" />
82 </layout>
83 <filter type="log4net.Filter.LoggerMatchFilter">
84 <loggerToMatch value="Error" />
85 </filter>
86 <filter type="log4net.Filter.DenyAllFilter" />
87 </appender>
88
89 <!--按等级文件夹日志文件 一天一个-->
90 <appender name="Warn" type="log4net.Appender.RollingFileAppender" >
91
92 <!--是否续写-->
93 <param name="AppendToFile" value="true" />
94 <!--最小锁定模型以允许多个进程可以写入同一个文件-->
95 <param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />
96 <param name="StaticLogFileName" value="true" />
97 <!--保存路径-->
98 <param name="File" value="Logs\Warn" />
99 <param name="DatePattern" value="yyyy-MM-dd.LOG" />
100 <param name="StaticLogFileName" value="false" />
101 <param name="RollingStyle" value="Date" />
102 <layout type="log4net.Layout.PatternLayout">
103 <param name="ConversionPattern" value="时间:%d %n级别:%level %n类名:%c%n文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" />
104 </layout>
105 <filter type="log4net.Filter.LoggerMatchFilter">
106 <loggerToMatch value="Warn" />
107 </filter>
108 <filter type="log4net.Filter.DenyAllFilter" />
109 </appender>
110
111 <!--按等级文件夹日志文件 一天一个-->
112 <appender name="Debug" type="log4net.Appender.RollingFileAppender" >
113
114 <!--是否续写-->
115 <param name="AppendToFile" value="true" />
116 <!--最小锁定模型以允许多个进程可以写入同一个文件-->
117 <param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />
118 <param name="StaticLogFileName" value="true" />
119 <!--保存路径-->
120 <param name="File" value="Logs\Debug" />
121 <param name="DatePattern" value="yyyy-MM-dd.LOG" />
122 <param name="StaticLogFileName" value="false" />
123 <param name="RollingStyle" value="Date" />
124 <layout type="log4net.Layout.PatternLayout">
125 <param name="ConversionPattern" value="时间:%d %n级别:%level %n类名:%c%n文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" />
126 </layout>
127 <filter type="log4net.Filter.LoggerMatchFilter">
128 <loggerToMatch value="Debug" />
129 </filter>
130 <filter type="log4net.Filter.DenyAllFilter" />
131 </appender>
132
133 <!--按等级文件夹日志文件 一天一个-->
134 <appender name="Info" type="log4net.Appender.RollingFileAppender" >
135
136 <!--是否续写-->
137 <param name="AppendToFile" value="true" />
138 <!--最小锁定模型以允许多个进程可以写入同一个文件-->
139 <param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />
140 <param name="StaticLogFileName" value="true" />
141 <!--保存路径-->
142 <param name="File" value="Logs\Info" />
143 <param name="DatePattern" value="yyyy-MM-dd.LOG" />
144 <param name="StaticLogFileName" value="false" />
145 <param name="RollingStyle" value="Date" />
146 <layout type="log4net.Layout.PatternLayout">
147 <param name="ConversionPattern" value="时间:%d %n级别:%level %n类名:%c%n文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" />
148 </layout>
149 <filter type="log4net.Filter.LoggerMatchFilter">
150 <loggerToMatch value="Info" />
151 </filter>
152 <filter type="log4net.Filter.DenyAllFilter" />
153 </appender>
154
155
156
157
158
159
160
161 <root>
162 <level value="ALL" />
163 <!--启用按等级文件夹分割-->
164 <appender-ref ref="Fatal" />
165 <appender-ref ref="Error" />
166 <appender-ref ref="Warn" />
167 <appender-ref ref="Debug" />
168 <appender-ref ref="Info" />
169
170 <!--启用按日期分割-->
171 <!--<appender-ref ref="LogFileAppenderByDate" />-->
172
173 <!--启用按容量分割-->
174 <!--<appender-ref ref="LogFileAppenderBySize" />-->
175 <!--启用保存到数据库-->
176 <!--<appender-ref ref="AdoNetAppender" />-->
177 </root>
178
179 </log4net>
<root> 实际上就是一个根logger,所有其它logger都默认继承它,
- appender-ref 零个或多个 需要引用的appender
- level 记录级别
<appender> 定义日志的输出方式 name属性必须唯一,type属性必须指定
<layout> 日志布局,type属性必须指定
<filter> 过滤器,type属性必须指定
更多需要参考资料:
最新文章
- neo4j-简介,安装
- Java Socket编程(转)
- 指针的指针&;指向指针数组的指针
- gridcontrol中使用右健菜单popupMenu1
- easy ui datagrid 获取选中行的数据
- HDU 5832 A water problem (带坑水题)
- laravel Authentication and Security
- 转载Entity Framework 5.0(EF first)中的添加,删除,修改,查询,状态跟踪操作
- python算法之二分查找
- 文本面板——axure线框图部件库介绍
- CSS3 贝塞尔曲线实现
- python_协程方式操作数据库
- WPF 列表开启虚拟化的方式
- python实现猜字游戏
- 用 jupyter notebook 打开 oui.txt 文件出现的问题及解决方案
- hdu-1814(2-sat)
- mysql-数据库管理安装
- edgedb 强大的对象关系数据库
- xshell 会话管理器快捷键
- supervisor管理进程工具配置