log4net配置🔥

1/8/2024 日志

# 安装和加载

在Nuget上面下载lognet,下载完成后,在程序根目录下创建log4net.config,在程序初始化的时候进行加载

//配置文件
var logCfg = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "log4net.config");
//加载配置
XmlConfigurator.ConfigureAndWatch(logCfg);
1
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

配置文件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&quot;.log&quot;"/>
			<!--按照何种方式产生多个日志文件(日期[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

这样在你调用后会在根目录下的Logs/Student下生成当前日期的日志文件

Student student = new Student();
student.WriteInfo();
student.WriteWarning();
student.WriteError();
1
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

# 打印控制台

如果你想要输出到文件里面,那么上面的配置就可以了,如果你想把他记录到文件,又打印在控制台上,则可以用下面的配置

查看
<?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&quot;.log&quot;"/>
			<!--按照何种方式产生多个日志文件(日期[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

注意:type="log4net.Appender.ManagedColoredConsoleAppender" 中的ManagedColoredConsoleAppender是.net有的,Framework的话是ConsoleAppender,要把mapping去掉。

mixureSecure