log4net配置🔥
CZerocheng 1/8/2024 日志
# 安装和加载
在Nuget上面下载lognet,下载完成后,在程序根目录下创建log4net.config,在程序初始化的时候进行加载
//配置文件
var logCfg = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "log4net.config");
//加载配置
XmlConfigurator.ConfigureAndWatch(logCfg);
1
2
3
4
2
3
4
或者如果有AssemblyInfo这个文件直接添加
[assembly:log4net.Config.XmlConfigurator(ConfigFileExtension="log4net",Watch=true)]
1
# 使用
internal class Student
{
private ILog logger = LogManager.GetLogger("Student");
public void WriteInfo()
{
logger.Info("成功写入信息!");
}
public void WriteWarning()
{
logger.Warn("成功写入警告!");
}
public void WriteError()
{
try
{
int i = 0;
int sum = 10 / i;
}
catch (Exception ex)
{
logger.Error("成功写入错误!" + ex.Message);
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
配置文件log4net.config配置一下信息:
查看
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net>
<!--信息日志类-->
<!--日志的等级,它们由高到底分别为:OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL -->
<logger name="Student">
<!--定义记录的日志级别-->
<level value="INFO"/>
<appender-ref ref="StudentAppender" />
</logger>
<appender name="StudentAppender" type="log4net.Appender.RollingFileAppender">
<!--设置日志存储路径-->
<param name="File" value="Logs/Student/" />
<!--是否追加到文件-->
<param name="AppendToFile" value="true" />
<!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数-->
<param name="MaxSizeRollBackups" value="100" />
<param name="MaxFileSize" value="10240" />
<!--是否只写到一个文件中-->
<param name="StaticLogFileName" value="false" />
<!--文件名前加上日期-->
<param name="DatePattern" value="yyyyMMdd".log""/>
<!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%n时间:%d [%t] %n级别:%-5p %n位置:[%thread] (%file:%line) %n消息描述:%message%n 异常信息:%exception%n 类名:%class%n " />
</layout>
</appender>
</log4net>
</configuration>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
这样在你调用后会在根目录下的Logs/Student下生成当前日期的日志文件
Student student = new Student();
student.WriteInfo();
student.WriteWarning();
student.WriteError();
1
2
3
4
2
3
4
结果输出:
时间:2024-02-02 08:45:35,113 [1]
级别:INFO
位置:[1] (F:\blog\Log4netDemo\Log4netDemo\Student.cs:16)
消息描述:成功写入信息!
异常信息:
类名:Log4netDemo.Student
时间:2024-02-02 08:45:35,146 [1]
级别:WARN
位置:[1] (F:\blog\Log4netDemo\Log4netDemo\Student.cs:21)
消息描述:成功写入警告!
异常信息:
类名:Log4netDemo.Student
时间:2024-02-02 08:45:35,160 [1]
级别:ERROR
位置:[1] (F:\blog\Log4netDemo\Log4netDemo\Student.cs:29)
消息描述:成功写入错误!Attempted to divide by zero.
异常信息:
类名:Log4netDemo.Student
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 打印控制台
如果你想要输出到文件里面,那么上面的配置就可以了,如果你想把他记录到文件,又打印在控制台上,则可以用下面的配置
查看
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net>
<!--信息日志类-->
<!--日志的等级,它们由高到底分别为:OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL -->
<logger name="Student">
<!--日志类的名字-->
<level value="INFO"/>
<!--定义记录的日志级别-->
<appender-ref ref="StudentAppender" />
<appender-ref ref="ColorConsoleAppender" />
<!--记录到哪个介质中去-->
</logger>
<appender name="StudentAppender" type="log4net.Appender.RollingFileAppender">
<!--设置日志存储路径-->
<param name="File" value="Logs/Student/" />
<!--是否追加到文件-->
<param name="AppendToFile" value="true" />
<!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数-->
<param name="MaxSizeRollBackups" value="100" />
<param name="MaxFileSize" value="10240" />
<!--是否只写到一个文件中-->
<param name="StaticLogFileName" value="false" />
<!--文件名前加上日期-->
<param name="DatePattern" value="yyyyMMdd".log""/>
<!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%n时间:%d [%t] %n级别:%-5p %n位置:[%thread] (%file:%line) %n消息描述:%message%n 异常信息:%exception%n 类名:%class%n " />
</layout>
</appender>
<appender name="ColorConsoleAppender" type="log4net.Appender.ManagedColoredConsoleAppender">
<!-- 设置不同级别控制台显示的不同颜色 -->
<mapping>
<level value="INFO" />
<foreColor value="Green" />
</mapping>
<mapping>
<level value="WARN" />
<foreColor value="Yellow" />
</mapping>
<mapping>
<level value="ERROR" />
<foreColor value="Red" />
</mapping>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%n时间:%d [%t] %n级别:%-5p %n位置:[%thread] (%file:%line) %n消息描述:%message%n 异常信息:%exception%n 类名:%class%n " />
</layout>
</appender>
</log4net>
</configuration>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
注意:type="log4net.Appender.ManagedColoredConsoleAppender" 中的ManagedColoredConsoleAppender是.net有的,Framework的话是ConsoleAppender,要把mapping去掉。
