思路:
1.安装插件:安装log4net
2.使用配置:添加log4net.config配置文件
3.输出日志文件格式:添加日志配置
4.AssemblyInfo.cs中配置
第一步:安装log4net
第二步:添加log4net.config配置文件
新增log4net.config配置文件,内容如下,与Program.cs同一目录即可。
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
|
<? xml version = "1.0" encoding = "utf-8" ?> < configuration > < configSections > < section name = "log4net" type = "log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </ configSections > < log4net > <!--level取值:OFF FATAL ERROR WARN INFO DEBUG ALL --> < logger name = "loginfo" > < level value = "ALL" /> < appender-ref ref = "InfoAppender" /> </ logger > < appender name = "InfoAppender" type = "log4net.Appender.RollingFileAppender" > < param name = "File" value = "log\\" /> < lockingModel type = "log4net.Appender.FileAppender+MinimalLock" /> < param name = "AppendToFile" value = "true" /> < param name = "MaxFileSize" value = "10240" /> < param name = "StaticLogFileName" value = "false" /> < param name = "DatePattern" value = "yyyy-MM-dd".txt"" /> < param name = "RollingStyle" value = "Date" /> < layout type = "log4net.Layout.PatternLayout" > < param name = "ConversionPattern" value = "%d [%p] - %m%n" /> </ layout > </ appender > </ log4net > </ configuration > |
并设置 – 属性 – 复制到输出目录为:始终复制
第三步:添加日志配置
在文件Program.cs应用程序主入口加入:
1
|
LogUtils.SetConfig( new FileInfo(Application.StartupPath + @"\log4net.config" )); |
LogUtils.cs 写入日志公共类
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
|
class LogUtils { private static readonly ILog loginfo = LogManager.GetLogger( "loginfo" ); /// <summary> /// 从缺省配置文件获取日志配置 /// </summary> public static void SetConfig() { XmlConfigurator.Configure(); } /// <summary> /// 从指定配置文件获取日志配置 /// </summary> /// <param name="configFile">指定的配置文件</param> public static void SetConfig(FileInfo configFile) { XmlConfigurator.Configure(configFile); } /// <summary> /// 生成分类日志 /// </summary> /// <param name="info">日志信息</param> /// <param name="dirName">保存目录名,形如d:\log\aaa</param> private static void WriteSortLog( string info, string dirName) { try { if ( false == System.IO.Directory.Exists(dirName)) { System.IO.Directory.CreateDirectory(dirName); } string path = dirName + "\\" + DateTime.Now.ToString( "yyyyMMdd" ) + ".txt" ; StreamWriter sw = new StreamWriter(path, true , System.Text.Encoding.Default); sw.WriteLine(DateTime.Now.ToString( "HH:mm:ss: " ) + info); sw.Close(); } catch (Exception ex) { string expMsg = "WriteSortLog异常:" + ex.Message + Environment.NewLine + ex.StackTrace; if (ex.InnerException != null ) expMsg += Environment.NewLine + "InnerException:" + ex.InnerException.Message; Error(expMsg, ex); } } /// <summary> /// Info级 常规日志 /// </summary> /// <param name="info">日志信息</param> public static void Info( string info) { if (loginfo.IsInfoEnabled) { loginfo.Info(info); } } /// <summary> /// Info 先生成常规日志,然后在指定目录另外创建一份日志 /// 主要用来需要对日志进行分类时使用 /// </summary> /// <param name="info"></param> /// <param name="dirName"></param> public static void Info( string info, string dirName) { if (loginfo.IsInfoEnabled) { //生成常规日志 loginfo.Info(info); //生成分类日志 WriteSortLog(info, dirName); } } /// <summary> /// Debug级 常规日志 /// </summary> /// <param name="info">日志信息</param> public static void Debug( string info) { if (loginfo.IsDebugEnabled) { loginfo.Debug(info); } } /// <summary> /// Debug级 异常日志 /// </summary> /// <param name="info">日志信息</param> /// <param name="exp">异常信息</param> public static void Debug( string info, Exception exp) { if (loginfo.IsDebugEnabled) { loginfo.Debug(info, exp); } } /// <summary> /// Error级 常规的日志 /// </summary> /// <param name="info">日志信息</param> public static void Error( string info) { if (loginfo.IsErrorEnabled) { loginfo.Error(info); } } /// <summary> /// Error 异常日志 /// </summary> /// <param name="info">日志信息</param> /// <param name="exp">异常信息</param> public static void Error( string info, Exception exp) { if (loginfo.IsErrorEnabled) { loginfo.Error(info, exp); } } /// <summary> /// Fatal级 常规日志 /// </summary> /// <param name="info">日志信息</param> public static void Fatal( string info) { if (loginfo.IsFatalEnabled) { loginfo.Fatal(info); } } /// <summary> /// Fatal级 异常日志 /// </summary> /// <param name="info">日志信息</param> /// <param name="exp">异常信息</param> public static void Fatal( string info, Exception exp) { if (loginfo.IsFatalEnabled) { loginfo.Fatal(info, exp); } } /// <summary> /// Warn级 常规日志 /// </summary> /// <param name="info">日志信息</param> public static void Warn( string info) { if (loginfo.IsWarnEnabled) { loginfo.Warn(info); } } /// <summary> /// Warn级 异常日志 /// </summary> /// <param name="info">日志</param> /// <param name="exp">异常信息</param> public static void Warn( string info, Exception exp) { if (loginfo.IsWarnEnabled) { loginfo.Warn(info, exp); } } } |
第四步:AssemblyInfo.cs中配置 Watch = true
在项目Properties文件夹下AssemblyInfo.cs中加入:
1
|
[assembly: log4net.Config.XmlConfigurator(Watch = true )] |
最后通过
1
2
3
|
LogUtils.Error(“错误日志”); LogUtils.Info(“正常输出日志”); LogUtils.Warn(“温馨提示日志”); |
最后启动项目:会在项目debug目录下输出日志文件夹log内
到此这篇关于C# log4net 日志输出的实现示例的文章就介绍到这了,更多相关C# log4net 日志输出内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/qq_16771097/article/details/120845149