首页 > 其他分享 >log4net 在winfrom中的使用

log4net 在winfrom中的使用

时间:2024-06-15 10:10:24浏览次数:13  
标签:log4net 文件 log winfrom message 使用 日志 ILog

1. 安装两个 nuget 包

 2. 创建 log4net.config 文件 ,选中 文件鼠标右键,选择属性->复制到输出目录 修改为 始终复制

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <!--只保留创建日期是最近1天的-->
    <log4net OverdueDays="1">
        <!-- Debug日志 -->
        <appender name="RollingFileDebug" type="log4net.Appender.RollingFileAppender" >
            <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
            <file value="logs\\" />
            <!-- 日志文件的命名规则 -->
            <datePattern value="yyyy-MM-dd/'Debug.log'"/>
            <!-- 将日志信息追加到已有的日志文件中-->
            <appendToFile value="true" />
            <rollingStyle value="Size" />
            <maxSizeRollBackups value="100" />
            <maximumFileSize value="3MB" />
            <!-- 指定按日期切分日志文件 -->
            <rollingStyle value="Date"/>
            <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
            <staticLogFileName value="false" />
            <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
            <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%newline%newline【日志时间】: %d  【线程ID】: %thread    %newline【日志级别】: %-5p  %newline【日志对象】:%logger  %newline【日志内容】:%m %newline" />
            </layout>
            <filter type="log4net.Filter.LevelRangeFilter">
                <param name="LevelMin" value="Debug" />
                <param name="LevelMax" value="Debug" />
            </filter>
        </appender>

        <!-- Info日志 -->
        <appender name="RollingFileInfo" type="log4net.Appender.RollingFileAppender" >
            <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
            <file value="logs\\" />
            <!-- 日志文件的命名规则 -->
            <datePattern value="yyyy-MM-dd/'Info.log'"/>
            <!-- 将日志信息追加到已有的日志文件中-->
            <appendToFile value="true" />
            <rollingStyle value="Size" />
            <maxSizeRollBackups value="100" />
            <maximumFileSize value="3MB" />
            <!-- 指定按日期切分日志文件 -->
            <rollingStyle value="Date"/>
            <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
            <staticLogFileName value="false" />
            <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
            <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%newline%newline【日志时间】:%d  【线程ID】:%thread    %newline【日志级别】:%-5p  %newline【日志对象】:%logger  %newline【日志内容】:%m %newline" />
            </layout>
            <filter type="log4net.Filter.LevelRangeFilter">
                <param name="LevelMin" value="Info" />
                <param name="LevelMax" value="Info" />
            </filter>
        </appender>

        <!-- WARN日志 -->
        <appender name="RollingFileWarn" type="log4net.Appender.RollingFileAppender" >
            <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
            <file value="logs\\" />
            <!-- 日志文件的命名规则 -->
            <datePattern value="yyyy-MM-dd/'Warn.log'"/>
            <!-- 将日志信息追加到已有的日志文件中-->
            <appendToFile value="true" />
            <rollingStyle value="Size" />
            <maxSizeRollBackups value="100" />
            <maximumFileSize value="3MB" />
            <!-- 指定按日期切分日志文件 -->
            <rollingStyle value="Date"/>
            <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
            <staticLogFileName value="false" />
            <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
            <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%newline%newline【日志时间】:%d  【线程ID】:%thread    %newline【日志级别】:%-5p  %newline【日志对象】:%logger  %newline【日志内容】:%m %newline" />
            </layout>
            <filter type="log4net.Filter.LevelRangeFilter">
                <param name="LevelMin" value="Warn" />
                <param name="LevelMax" value="Warn" />
            </filter>
        </appender>

        <!-- Error日志 -->
        <appender name="RollingFileError" type="log4net.Appender.RollingFileAppender" >
            <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
            <file value="logs\\" />
            <!-- 日志文件的命名规则 -->
            <datePattern value="yyyy-MM-dd/'Error.log'"/>
            <!-- 将日志信息追加到已有的日志文件中-->
            <appendToFile value="true" />
            <rollingStyle value="Size" />
            <maxSizeRollBackups value="100" />
            <maximumFileSize value="3MB" />
            <!-- 指定按日期切分日志文件 -->
            <rollingStyle value="Date"/>
            <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
            <staticLogFileName value="false" />
            <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
            <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%newline%newline【日志时间】:%d  【线程ID】:%thread    %newline【日志级别】:%-5p  %newline【日志对象】:%logger  %newline【日志内容】:%m %newline" />
            </layout>
            <filter type="log4net.Filter.LevelRangeFilter">
                <param name="LevelMin" value="Error" />
                <param name="LevelMax" value="Error" />
            </filter>

        </appender>

        <!-- Fatal日志 -->
        <appender name="RollingFileFatal" type="log4net.Appender.RollingFileAppender" >
            <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
            <file value="logs\\" />
            <!-- 日志文件的命名规则 -->
            <datePattern value="yyyy-MM-dd/'Fatal.log'"/>
            <!-- 将日志信息追加到已有的日志文件中-->
            <appendToFile value="true" />
            <rollingStyle value="Size" />
            <maxSizeRollBackups value="100" />
            <maximumFileSize value="3MB" />
            <!-- 指定按日期切分日志文件 -->
            <rollingStyle value="Date"/>
            <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
            <staticLogFileName value="false" />
            <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
            <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%newline%newline【日志时间】:%d  【线程ID】:%thread    %newline【日志级别】:%-5p  %newline【日志对象】:%logger  %newline【日志内容】:%m%newline" />
            </layout>
            <filter type="log4net.Filter.LevelRangeFilter">
                <param name="LevelMin" value="Fatal" />
                <param name="LevelMax" value="Fatal" />
            </filter>
        </appender>

        <!--将日志存到数据库配置-->
        <!--<appender name="logAppender_SqlServer" type="log4net.Appender.ADONetAppender">
            <bufferSize value="0"/>
            <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
            链接数据库配置
            <connectionString value="Data Source=.;Initial Catalog=WebApiOne;User ID=sa;Password=123456;"/>
            <commandText value="INSERT INTO LogData ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)"/>
            <parameter>
                <parameterName value="@log_date"/>
                <dbType value="DateTime"/>
                <layout type="log4net.Layout.RawTimeStampLayout"/>
            </parameter>
            <parameter>
                <parameterName value="@thread"/>
                <dbType value="String"/>
                <size value="50"/>
                <layout type="log4net.Layout.PatternLayout">
                    <conversionPattern value="%thread"/>
                </layout>
            </parameter>
            <parameter>
                <parameterName value="@log_level"/>
                <dbType value="String"/>
                <size value="50"/>
                <layout type="log4net.Layout.PatternLayout">
                    <conversionPattern value="%level"/>
                </layout>
            </parameter>
            <parameter>
                <parameterName value="@logger"/>
                <dbType value="String"/>
                <size value="200"/>
                <layout type="log4net.Layout.PatternLayout">
                    <conversionPattern value="%logger"/>
                </layout>
            </parameter>
            <parameter>
                <parameterName value="@message"/>
                <dbType value="String"/>
                <size value="2000"/>
                <layout type="log4net.Layout.PatternLayout">
                    <conversionPattern value="%message"/>
                </layout>
            </parameter>
            <parameter>
                <parameterName value="@exception"/>
                <dbType value="String"/>
                <size value="2000"/>
                <layout type="log4net.Layout.ExceptionLayout"/>
            </parameter>
        </appender>-->

        <root>
            <!--控制级别,由低到高:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF 比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录 如果没有定义LEVEL的值,则缺省为DEBUG-->
            <appender-ref ref="RollingFileDebug" />
            <appender-ref ref="RollingFileInfo" />
            <appender-ref ref="RollingFileWarn" />
            <appender-ref ref="RollingFileError" />
            <appender-ref ref="RollingFileFatal" />
            <appender-ref ref="logAppender_SqlServer" />
            <level value="DEBUG" />

        </root>

    </log4net>
</configuration>

3. 在您的Winform项目的任何地方,导入log4net的命名空间:

using log4net;

4. 在AssemblyInfo.cs 文件中添加 

 

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Common/log4net.config")]

5. 在您的代码中,声明一个静态的ILog对象来进行日志记录:

private static readonly ILog _log = LogManager.GetLogger(typeof(你当前是在哪个窗体));

6.在需要记录日志的地方,使用ILog对象的方法来记录日志。例如:

_log.Info("Information log message");
_log.Debug("Debug log message");
_log.Error("Error log message");

7,日志文件查看

 

 



标签:log4net,文件,log,winfrom,message,使用,日志,ILog
From: https://www.cnblogs.com/tlfe/p/18249041

相关文章

  • Java毕业设计-基于springboot开发的体育馆使用预约平台设计与实现-毕业论文(附毕设源代
    文章目录前言一、毕设成果演示(源代码在文末)二、毕设摘要展示1、开发说明2、需求/流程分析3、系统功能结构三、系统实现展示1、管理员后台功能实现四、毕设内容和源代码获取总结Java毕业设计-基于springboot开发的体育馆使用预约平台设计与实现-毕业论文(附毕设源代码......
  • 使用超声波麦克风阵列预测数控机床刀具磨损
       预测性维护是使用传感器数据来推断机器状态,并从这些传感器数据中检测出在故障发生之前存在的缺陷或故障的过程。预测性维护在所有工业领域都是一种日益增长的趋势,包括轴承故障检测、齿轮磨损检测或往复式机器中的活塞磨损等许多其他例子。在预测性维护领域,应用了大量传......
  • 1对1视频聊天源码,优化后的缓存使用效果更好
    1对1视频聊天源码,优化后的缓存使用效果更好缓存是提升1对1视频聊天源码的有效方法之一,尤其是用户受限于网速的情况下,可以提升系统的响应能力,降低网络的消耗。当然,内容越接近于用户,则缓存的速度就会越快,缓存的有效性则会越高。不过,在1对1视频聊天源码的某些特定场景下缓存还需......
  • R语言数据分析案例27-使用随机森林模型对家庭资产的回归预测分析
    一、研究背景及其意义家庭资产分析在现代经济学中的重要性不仅限于单个家庭的财务健康状况,它还与整个经济体的发展紧密相关。家庭资产的增长通常反映了国家经济的整体增长,而资产分布的不均则暴露了经济不平等的问题。因此,全球视角下的家庭资产分析可以揭示国际经济动态,有助于......
  • exceljs使用文档
    安装npminstallexceljs目录导入接口创建工作簿设置工作簿属性工作簿视图添加工作表删除工作表访问工作表工作表状态工作表属性页面设置页眉和页脚工作表视图冻结视图拆分视图自动筛选器列行AddRows处理单个单元格合并单元格InsertRowsSplic......
  • openGauss 使用指导
    使用指导用户可通过gs_dbmind命令启动对应的exporter。下面为用户演示一个完整的Prometheus监控平台的搭建过程。通过命令行进行Prometheus和所有exporter的启动:gs_dbmindcomponentdeployment--runprometheus和各个exporter单独的启动方式可以参考后续步骤,如果用户只......
  • XXL-job 使用
    1、找到XXL-job官网去下代码https://github.com/xuxueli/xxl-job2、下载下来用IDEA打开,你会得到这样子的目录结构3、打开doc目录下面有个db,在你数据库里面创建对应的数据库4、运行服务端xxl-job-admin登录进去账号admin密码123456好了,现在我们服务端启动好了5、创建......
  • Minio使用(Minio帮助类 3.1.13版本 )
    目录一、安装部署二、注册成window服务三、C#文件上传下载四、minio文件操作帮助类一、安装部署1、下载安装包:MinIO|高性能,对Kubernetes友好的对象存储2、放到磁盘中,后面会以这个文件进行服务器安装3、磁盘新建一个目录用于存放上传文件,比如我创建的为:Data4、......
  • 【C语言习题】30.使用指针打印数组内容
    文章目录作业标题作业内容2.解题思路3.具体代码作业标题使用指针打印数组内容作业内容写一个函数打印arr数组的内容,不使用数组下标,使用指针。arr是一个整形一维数组。2.解题思路先定义一个数组,使用指针打印数组内容那就是说我们可以通过对指针解引用,来访问......
  • Java--数组的使用
    1.普通For循环(用的最多,需从中取出数据以及下标)        eg:图中三类问题都可2.For-each循环(一般用来打印一些结果)    eg:打印数组的具体元素3.数组作方法入参(对数组进行一些操作)    eg:可通过参数调用数组4.数组做返回值(对数组进行修改,最后返回一......