场景
log4net
https://logging.apache.org/log4net/
The Apache log4net library is a tool to help the programmer output log statements to a variety of output targets. log4net is a port of the excellent Apache log4j™ framework to the Microsoft® .NET runtime.
We have kept the framework similar in spirit to the original log4j while taking advantage of new features in the .NET runtime.
Apachelog4net库是一种帮助程序员将日志语句输出到各种输出目标的工具。
log4net是优秀的Apache log4j的端口™ 框架到Microsoft®.NET运行时。保持了与原始log4j在精神上相似的框架,同时利用了.NET运行时中的新功能。
Winform程序中需要将运行过程的错误日志记录到文件中。
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
实现
1、项目中添加log4net依赖
使用nuget搜索log4net,然后进行安装
2、在项目目录下新建log4net.config作为配置文件
配置文件内容修改为
<?xml version="1.0" encoding="utf-8" ?> <log4net> <!--根配置--> <root> <!--日志级别:可选值: ERROR > WARN > INFO > DEBUG --> <level value="ERROR"/> <appender-ref ref="ErrorLog" /> </root> <!-- 错误 Error.log--> <appender name="ErrorLog" type="log4net.Appender.RollingFileAppender"> <!--目录路径,可以是相对路径或绝对路径--> <file value="log/log.txt" /> <appendToFile value="true" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="7" /> <maximumFileSize value="5MB" /> <staticLogFileName value="true" /> <!--日志格式--> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date %message %n"/> </layout> <!--输出级别在ERROR和ERROR之间的日志--> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="ERROR" /> <param name="LevelMax" value="ERROR" /> </filter> </appender> </log4net>
这里的配置文件只配置了ERROR级别的日志输出,并且配置的类型wi循环覆盖输出到文件。
这里的滚动覆盖的策略设置
<rollingStyle value="Size" />代表为按照文件大小进行滚动
<maximumFileSize value="5MB" />单个文件大小不超过5M,这里除了MB还可以使用KB或GB
<maxSizeRollBackups value="7" />超过5兆后最大文件个数为7个,如果设置为-1则个数不限制。
上面的配置文件可参考官网提供的配置的demo
https://logging.apache.org/log4net/release/config-examples.html
这里的滚动策略除了按照文件大小,还可以采用按照日期以及按照日期和文件混合的方式去设置,具体配置可参考官网说明。
https://logging.apache.org/log4net/release/sdk/html/T_log4net_Appender_RollingFileAppender.htm
3、配置文件新建成功之后,点击此配置文件的属性,选择始终复制
4、在项目目录下的AssemblyInfo.cs中添加如下配置
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]
5、新建日志工具类
class LogHelper { public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror"); public static void WriteErrorLog(string errorMessage) { if (logerror.IsErrorEnabled) { logerror.Error(errorMessage); } } }
6、日志输出使用
private void button_Log4Net_Click(object sender, EventArgs e) { LogHelper.WriteErrorLog("霸道的程序猿"); }
7、测试文件大小循环覆盖
将上面的日志输出error放在按钮点击事件中,然后设置为文件大小最大为1KB,文件个数最大为3个。
一直点击可以看到生成三个日志的备份文件
当超过三个时,再次记录日志会从第一个开始覆盖
根据更改时间可以验证
其它日志记录到数据库或者控制台等情况,参考官网说明。