网站首页 > 技术文章 正文
前记:Log4Net是.Net下一个非常优秀的开源日志记录组件。log4net记录日志的功能非常强大。它可以将日志分不同的等级,以不同的格式,输出到不同的媒介。在上位机开发中,如果可以集成日志功能,不仅让你的系统更加完善,同时也可以提高你的开发和调试效率。
一、Log4Net优势:
(1)可以提供应用程序运行时的精确环境,可供开发人员尽快找到应用程序中的Bug;
(2)一旦在程序中加入了Log 输出代码,程序运行过程中就能生成并输出日志信息而无需人工干预;
(3)日志信息可以输出到不同的地方(控制台,文件等),以备以后研究之用。
二、Log4Net配置
(1)添加dll引用:可以直接通过将dll文件复制到指定路径下进行添加,也可以通过Nuget进行添加。
(2)添加一个配置文件:在项目上右击添加新建项,选择应用程序配置文件,并将名称改成log4net.config;
(3)在log4net.config配置文件中,添加配置内容,具体如下,该部分内容可配置修改,大家在了解清楚后可以自行修改,初学者可以直接复制使用:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
<log4net>
<root>
</root>
<logger name="Error">
<level value="ALL" />
<appender-ref ref="ErrorAppender" />
</logger>
<logger name="InfoLog">
<level value="ALL" />
<appender-ref ref="InfoAppender" />
</logger>
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender,log4net" >
<param name="File" type="" value="Log/Error/" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyyMMdd".ini"" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%n[%d] %c %n%m%n%n" />
</layout>
</appender>
<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender,log4net" >
<param name="File" type="" value="Log/Info/" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyyMMdd".ini"" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%n[%d] %c %n%m%n%n" />
</layout>
</appender>
</log4net>
</configuration>
(4)设置log4net.config配置文件属性:将该文件复制到输出目录属性设置成较新复制或者始终复制;
(5)AssemblyInfo.cs中添加一行配置信息,配置内容如下:
(6)添加并编写LogHelper类,便于调用:
(7)完成以上步骤,即可完成Log4Net的基本配置,后续可以直接进行调用:下面以一个强制转换出错为例:
日志信息如下:
- 上一篇: Serilog源码解析——使用方法(sed源码)
- 下一篇: 使用Fusion解析未引用的部分类型名称
猜你喜欢
- 2024-09-27 微软发布 .Net Core 3.0 版重大更新,对开发者来说意味着什么?
- 2024-09-27 生信分析过程中这些常见文件的格式以及查看方式你都知道吗?
- 2024-09-27 .NET 各种混淆的含义、原理、实际效果和不同级别的差异
- 2024-09-27 Swashbuckle.AspNetCore3.0的二次封装与使用
- 2024-09-27 《Inside C#》笔记(十四)反射(c# dynamic 反射)
- 2024-09-27 Wasmer可以在各种操作系统上运行WebAssembly
- 2024-09-27 使用Fusion解析未引用的部分类型名称
- 2024-09-27 Serilog源码解析——使用方法(sed源码)
- 2024-09-27 聊一聊被 .NET程序员 遗忘的 COM 组件
- 2024-09-27 如何在VS2019中编译C#.NET Core控制台应用程序并分析生成后的文件
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (87)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)