log4net 在winfrom中的使用

news/2024/10/5 23:24:35
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,日志文件查看

 

 



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/43909.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

MySQL 5.7贴心参数之binlog_row_image=full

相信大家都了解mysql binlog的格式,那就是有三种,分别是STATEMENT,MiXED,ROW。各有优劣,具体的请大家自行查阅资料。在MySQL 5.7版本以前,虽然ROW格式有各种各样的好处。 1. 比如加快从库重放日志;ROW直接调用mysql的存储引擎接口(handler API) 来执行行的插入、删除和更新…

0-SpringBoot 内嵌 camunda

‍https://docs.camunda.org/manual/7.21/user-guide/spring-boot-integration/我的项目环境springboot :2.0.4.RELEASE​ jdk:1.8 多数据源 数据库:postgresql​引入依赖<dependency><groupId>org.camunda.bpm.springboot</groupId><artifactId>ca…

矩阵计算

梯度将导数拓展到向量将导数拓展到矩阵

Python如何离线安装第三方库?

大家好,我是Python进阶者。 一、前言 前几天在Python最强王者交流群【斌】问了一个Python第三方库离线下载的问题,问题如下:求教大佬,这个库(python-docx/),能下载下来吗?我是链接另存为,但是速度太慢? 二、实现过程 这里【莫生气】给了个思路如下:直接 pip 安装就可…

回车和换行

总算搞清楚"回车"和"换行"的来历和区别了在学计算机的时候,总是会遇到回车和换行,但一直没去深究;在学习字符编码相关知识的时候,觉得得深入去搞懂下,除了编码,在我们日常工作中也是经常会遇到的。 因此去网上查阅了相关博客,有了今天这篇文章。我们…

FreeRTOS简单内核实现2 双向链表

FreeRTOS 的 list.c / list.h 文件中有 3 个数据结构、2 个初始化函数、2 个插入函数、1 个移除函数和一些宏函数,链表是 FreeRTOS 中的重要数据结构FreeRTOS Kernel V10.3.1 FreeRTOS 的 list.c / list.h 文件中有 3 个数据结构、2 个初始化函数、2 个插入函数、1 个移除函数…

FastAPI快速入门2 Pydantic错误处理

2.1 Pydantic简介 Pydantic使用python类型注解进行数据验证和配置管理。这是一款能让您更精确地处理数据结构的工具。例如,到目前为止,我们一直依赖字典来定义项目中的典型配方。有了Pydantic,我们可以这样定义配方: from pydantic import BaseModelclass Recipe(BaseModel…