首页 > 其他分享 >Winform中使用Log4Net实现日志记录到文件并循环覆盖

Winform中使用Log4Net实现日志记录到文件并循环覆盖

时间:2023-11-06 10:14:02浏览次数:39  
标签:Log4Net log4net logerror 配置文件 文件大小 https 日志 Winform

场景

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个。

一直点击可以看到生成三个日志的备份文件

 

当超过三个时,再次记录日志会从第一个开始覆盖

 

根据更改时间可以验证

其它日志记录到数据库或者控制台等情况,参考官网说明。

标签:Log4Net,log4net,logerror,配置文件,文件大小,https,日志,Winform
From: https://www.cnblogs.com/badaoliumangqizhi/p/17811900.html

相关文章

  • Linux 日志管理
    rsyslog介绍日志(Log)是记录和存储计算机、软件、应用或其他系统的操作和事件的文件或数据流。它们可以为系统管理员、开发人员和最终用户提供详细的背景信息,以帮助他们了解和诊断系统的行为。rsyslog是一个开源的日志处理工具,一般用在类Unix系统上,是syslogd的扩展。它提供了更......
  • Filebeat on k8s 日志采集实战操作
    目录一、概述二、K8s集群部署三、ElasticSearch和kibana环境部署1)部署docker2)部署docker-compose3)创建网络4)修改Linux句柄数和最大线程数5)下载部署包开始部署四、Filebeatonk8s部署(daemonset)1)安装helm2)下载部署包进行安装3)检查数据是否正常采集到ES一、概述Filebea......
  • mysql教程:binlog日志和数据备份
    DMLDDL数据恢复、主从复制数据备份:全量备份、增量备份数据恢复的步骤:备份数据库–还原数据文件–应用binlog–验证数据mysqlbinlog工具、将备份后的修改操作应用到数据库,将数据库恢复到最新的状态数据库的完整性、一致性binlog和数据备份数据备份是将数据库的数据文件复制到另......
  • Linux学习日志
    Linux学习日志1、走近Linux系统1.1、开机登录开机会启动许多程序。它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。开机成功后,它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户将作为参数传......
  • winform切换页面
    布局效果如下图: 首先在主窗体后台代码声明需要打开的窗体变量,代码如下:1publicpartialclassForm1:Form2{3ButtonbtnShadow;//作为中间寄存button,用于显示4Homehome;5Settingsetting;6Recordrecord;7......
  • Winform高亮显示图标和标题
    效果下如图: 创建ActivateButton公用方法,代码如下:privatevoidActivateButton(objectsenderBtn,Colorcolor1,Colorcolor2,Colorcolor3){if(senderBtn!=null){DisableButton();//B......
  • C# winform捕获程序异常内容
    staticvoidMain(){Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.ThreadException+=Application_ThreadException;Application.Run(newForm1());}privatestaticvoidApplication_Threa......
  • 103 添加日志
    1,nuget安装log4net2,assemblyinfo追加:[assembly:log4net.Config.XmlConfigurator(ConfigFile="log4net.Config",ConfigFileExtension="config",Watch=true)]3,增加:<sectionname="log4net"type="log4net.Config.Log4NetConf......
  • Hadoop-3.3.3分布式集群的文件配置,启动hadoop历史服务和启动日志聚集
    一、分布式集群的文件配置涉及$HADOOP_HOME/etc/hadoop路径下的5个文件workers、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml首先修改workers进入$HADOOP_HOME/etc/hadoopvimworkers编辑自己的主机节点。注意!每行一个,默认为把本机节点同时作为数据节......
  • c# winform获取gridview数据
    //取单元格数据三种方法this.dataGridView1[e.ColumnIndex,e.RowIndex].Value.ToString();//第一种取法this.dataGridView1.Rows[e.RowIndex].Cells["你所要取值的列名称"].Value.ToString();//第二种取法this.dataGridView1.Cur......