【Unity工具】Log4net参考
聪头 游戏开发萌新

Log4net

2021年2月12日17:22:39

参考:

使用

环境配置

log4net官网:https://logging.apache.org/log4net/download_log4net.html

image image

本地日志配置

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
55
56
57
58
59
60
61
62
63
64
65
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net>
<!-- 日志默认值节点 -->
<root>
<!-- 默认日志对象级别 -->
<!--(高) OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL (低) -->
<level value="all" />
<!-- 默认日志记录方式 ref为<appender>节点的name属性-->
<appender-ref ref="UnityFileLog"/>
</root>

<!-- RollingFileAppender:将日志以回滚文件(重复操作原始文件)的形式写到文件中。-->

<!-- 文件形式记录日志-Debug -->
<appender name="UnityFileLog" type="log4net.Appender.RollingFileAppender">
<!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
<param name="RollingStyle" value="Date" />

<!--日志文件路径,按文件大小方式输出时在这里指定文件名,按天在文件名后自动添加当天日期形成文件-->
<param name= "File" type="log4net.Util.PatternString" value= "%property{ApplicationLogPath}/log_"/>

<!--按日期产生文件夹,文件名[在日期方式与混合方式下使用]日志文件名格式为:2008-08-31.log -->
<param name= "DatePattern" value= "yyyy-MM-dd&quot;.log&quot;"/>

<!--是否是向文件中追加日志-->
<param name= "AppendToFile" value= "true"/>

<!--记录日志写入文件时,不锁定文本文件-->
<!--<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />-->
<!--Unicode编码-->
<!--<Encoding value="UTF-8" />-->
<!--最多产生的日志文件数,value="-1"为不限文件数-->
<!--<param name="MaxSizeRollBackups" value="10" />-->
<!--log保留天数-->
<param name= "MaxSizeRollBackups" value= "-1"/>

<!--日志文件名是否是固定不变的(是否只写到一个文件中)-->
<param name= "StaticLogFileName" value= "false"/>

<!--每个文件的大小。只在混合方式与文件大小方式下使用,超出大小的在文件名后自动增加1重新命名-->
<param name="maximumFileSize" value="1024KB" />

<!--记录的格式。-->
<layout type="log4net.Layout.PatternLayout">
<!--
%d, %date :表示当地的时间
%p, %level :表示日志的级别
%c, %logger :表示日志产生的主题或名称,通常是所在的类名,便于定位问题
%m, %message :表示日志的具体内容
%n, %newline :换行
%exception :表示异常信息
%thread :线程号
%processid :进程号
%newline 文件名称:[ %file ]%newline
异常方法:[ %method ]%newline 异常行号:[ %line行 ]%newline 记录时间:[ %date ]%newline
日志级别:[ %-5level ]%newline 出错类:[ %logger ]%newline 属性:[ %property{NDC}
]%newline 错误描述:[ %message ]%newline
-->
<param name="ConversionPattern" value="%date | %-5p | [thread:%thread] %c:%line - %m %n" />
</layout>
</appender>

</log4net>
</configuration>

C#代码

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
55
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using log4net;
using log4net.Config;

namespace TestLog4Net
{
public class Program
{
public static void Main(string[] args)
{
//初始化log4net对象
InitLog4Net();
//创建默认类型的日志对象(传递对象类型typeof(Program)可以自动记录类名称)
var logger = LogManager.GetLogger(typeof(Program));
//创建指定类型的日志对象
var loggerDbDebug = LogManager.GetLogger("logger.db.debug");
var loggerDbInfo = LogManager.GetLogger("logger.db.info");//创建指定类型的文本日志对象
var loggerFileDebug = LogManager.GetLogger("logger.file.debug");
var loggerFileOther = LogManager.GetLogger("logger.file.other");

//写入默认类型日志
logger.Debug("测试日志");//配置了过滤器不记录此条信息
logger.Info("测试日志");
logger.Error("测试日志");
//写入指定类型日志(可以先验证是否为当前日志级别)
if (loggerDbDebug.IsDebugEnabled)
loggerDbDebug.Debug("db.debug", new Exception("db.debug.Exception"));
if (loggerDbInfo.IsInfoEnabled)
loggerDbInfo.Info("db.info", new Exception("db.info.Exception"));
//写入指定类型的文本日志
loggerFileDebug.Debug("file.debug", new Exception("file.debug.Exception"));
loggerFileOther.Info("file.info", new Exception("file.info.Exception"));
loggerFileOther.Warn("file.warn", new Exception("file.warn.Exception"));
loggerFileOther.Error("file.error", new Exception("file.error.Exception"));//配置了过滤器不记录此条信息
loggerFileOther.Fatal("file.fatal", new Exception("file.fatal.Exception"));//配置了过滤器不记录此条信息

Console.WriteLine("complete");
Console.ReadKey();
}

public static void InitLog4Net()
{
//配置文件
var logCfg = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "/Config/log4net.config");
//加载配置
XmlConfigurator.ConfigureAndWatch(logCfg);
}
}
}
image image
 评论