C#Log4net設定

C#Log4net設定

這篇介紹在C#上安裝Log4net以及如何設定及使用功能

對專案右鍵->管理NuGet套件->安裝log4net

log4net.config 如下
ERROR和FATAL會多印出程式行號

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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net>
<root>
<level value="DEBUG" />
<appender-ref ref="DebugRollingFileAppender"/>
<appender-ref ref="InfoRollingFileAppender"/>
<appender-ref ref="WarnRollingFileAppender"/>
<appender-ref ref="ErrorRollingFileAppender"/>
<appender-ref ref="FatalRollingFileAppender"/>
</root>
<appender name="DebugRollingFileAppender" type="log4net.Appender.RollingFileAppender" level="DEBUG">
<file type="log4net.Util.PatternString" value="C:\NetLog\.log"/>
<preserveLogFileNameExtension value="true"/>
<staticLogFileName value="false"/>
<param name="AppendToFile" value="true"/>
<rollingStyle value="Composite"/>
<datePattern value="yyyyMMdd-'DEBUG'"/>
<encoding value="UTF-8"/>
<maxSizeRollBackups value="30" />
<maximumFileSize value="100MB"/>
<countDirection value="1"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%date %-5level [%method] - %message%newline"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="DEBUG" />
</filter>
</appender>
<appender name="InfoRollingFileAppender" type="log4net.Appender.RollingFileAppender" level="INFO">
<file type="log4net.Util.PatternString" value="C:\NetLog\.log"/>
<preserveLogFileNameExtension value="true"/>
<staticLogFileName value="false"/>
<param name="AppendToFile" value="true"/>
<rollingStyle value="Composite"/>
<datePattern value="yyyyMMdd-'INFO'"/>
<encoding value="UTF-8"/>
<maxSizeRollBackups value="30" />
<maximumFileSize value="100MB"/>
<countDirection value="1"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%date %-5level [%method] - %message%newline"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="INFO" />
<param name="LevelMax" value="INFO" />
</filter>
</appender>
<appender name="WarnRollingFileAppender" type="log4net.Appender.RollingFileAppender" level="WARN">
<file type="log4net.Util.PatternString" value="C:\NetLog\.log"/>
<preserveLogFileNameExtension value="true"/>
<staticLogFileName value="false"/>
<param name="AppendToFile" value="true"/>
<rollingStyle value="Composite"/>
<datePattern value="yyyyMMdd-'WARN'"/>
<encoding value="UTF-8"/>
<maxSizeRollBackups value="30" />
<maximumFileSize value="100MB"/>
<countDirection value="1"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%date %-5level [%method] - %message%newline"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="WARN" />
<param name="LevelMax" value="WARN" />
</filter>
</appender>
<appender name="ErrorRollingFileAppender" type="log4net.Appender.RollingFileAppender" level="ERROR">
<file type="log4net.Util.PatternString" value="C:\NetLog\.log"/>
<preserveLogFileNameExtension value="true"/>
<staticLogFileName value="false"/>
<param name="AppendToFile" value="true"/>
<rollingStyle value="Composite"/>
<datePattern value="yyyyMMdd-'ERROR'"/>
<encoding value="UTF-8"/>
<maxSizeRollBackups value="30" />
<maximumFileSize value="100MB"/>
<countDirection value="1"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%date %-5level [%method](%logger:%line) - %message%newline"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="ERROR" />
<param name="LevelMax" value="ERROR" />
</filter>
</appender>
<appender name="FatalRollingFileAppender" type="log4net.Appender.RollingFileAppender" level="FATAL">
<file type="log4net.Util.PatternString" value="C:\NetLog\.log"/>
<preserveLogFileNameExtension value="true"/>
<staticLogFileName value="false"/>
<param name="AppendToFile" value="true"/>
<rollingStyle value="Composite"/>
<datePattern value="yyyyMMdd-'FATAL'"/>
<encoding value="UTF-8"/>
<maxSizeRollBackups value="30" />
<maximumFileSize value="100MB"/>
<countDirection value="1"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%date [%-5level] [%method](%logger:%line) - %message%newline"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="FATAL" />
<param name="LevelMax" value="FATAL" />
</filter>
</appender>
</log4net>
</configuration>

需要使用的.cs 需加入設定

1
XmlConfigurator.Configure(new FileInfo("./log4net.config"));

程式行號功能需搭配.pdb

工具->選項-偵錯->符號
符號檔(.pdb)位置勾選Microsoft符號伺服器
佈版需要將.exe執行檔和.pdb符號檔一起deploy
log才會顯示行號

Log使用方法

1
2
3
4
5
6
7
8
9
public class LogUtil
{
public static readonly log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
}
LogUtil.logger.Info("");
LogUtil.logger.Debug("");
LogUtil.logger.Warn("");
LogUtil.logger.Error("");
LogUtil.logger.Fatal("");