当前位置: 首页 > news >正文

C# Log4Net应用

1 需求分析

        日志记录是程序开发中必不可少的环节,对于bug调试和后期项目维护都十分重要.其中Log4net是C#环境下广泛使用的日志记录库,功能十分强大.本教程提供的日志记录需求如下

  1,日志文件统一保存到项目启动目录下的logs文件夹
  2,以天为单位进行日志文件的保存

2 环境配置

        通过NuGet直接搜索log4net进行安装

3 编写配置文件

           在项目目录下新建log4net.config文件

4 设置log4net.config的属性

        设置log4net.config的属性为复制到输出目录,否则在程序运行时无法加载配置文件

log4net.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration><configSections><section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/></configSections><log4net><!--其中layout节点的配置说明:%m(message):输出的日志消息;%n(newline):换行;%d(datetime):输出当前语句运行的时刻;%r(runtime):输出程序从运行到执行到当前语句时消耗的毫秒数;%t(threadid):当前语句所在的线程ID ;%p(priority): 日志的当前日志级别;%c(class):当前日志对象的名称;%L:输出语句所在的行号;%F:输出语句所在的文件名;%-10:表示最小长度为10,如果不够,则用空格填充;--><appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"><!--日志路径--><param name= "File" value= "logs\\info\\"/><!--多线程时采用最小锁定--><lockingModel type="log4net.Appender.FileAppender+MinimalLock"/><!--是否是向文件中追加日志--><param name= "AppendToFile" value= "true"/><!--最大的文件大小,默认的文件大小是10MB。--><maximumFileSize value="5MB" /><!--当日志文件达到MaxFileSize大小,就自动创建备份文件。备份文件的多少由MaxSizeRollBackups决定--><param name= "MaxSizeRollBackups" value= "10"/><!--日志文件名是否是固定不变的--><param name= "StaticLogFileName" value= "false"/><!--日志文件名格式为:2022-05-22.log--><!--<param name= "DatePattern" value= "yyyy-MM-dd HH'.log'"/>--><!--文件名,按日期生成文件夹--><param name="DatePattern" value="/yyyy-MM/&quot;Info_&quot;MM-dd-HH&quot;.log&quot;"/><!--日志根据日期滚动--><param name= "RollingStyle" value= "Date"/><layout type="log4net.Layout.PatternLayout"><param name="ConversionPattern" value="%d [%t] %-5p %c [%L] - %m %n" /></layout><!--过滤器--><filter type="log4net.Filter.LevelRangeFilter"><!--用于过滤掉Fatal类型的异常--><levelMax value="ERROR"/><levelMin value="INFO"/></filter><filter type="log4net.Filter.DenyAllFilter"/><!--不加这个过滤器也可以--></appender><appender name="ExceptionAppender" type="log4net.Appender.RollingFileAppender"><!--日志路径--><param name= "File" value= "logs\\Exception\\"/><!--多线程时采用最小锁定--><lockingModel type="log4net.Appender.FileAppender+MinimalLock"/><!--是否是向文件中追加日志--><param name= "AppendToFile" value= "true"/><!--最大的文件大小,默认的文件大小是10MB。--><maximumFileSize value="5MB" /><!--当日志文件达到MaxFileSize大小,就自动创建备份文件。备份文件的多少由MaxSizeRollBackups决定--><param name= "MaxSizeRollBackups" value= "10"/><!--日志文件名是否是固定不变的--><param name= "StaticLogFileName" value= "false"/><!--日志文件名格式为:2022-05-22.log--><!--<param name= "DatePattern" value= "yyyy-MM-dd HH'.log'"/>--><!--文件名,按日期生成文件夹--><param name="DatePattern" value="/yyyy-MM/&quot;fault_&quot;MM-dd-HH&quot;.log&quot;"/><!--日志根据日期滚动--><param name= "RollingStyle" value= "Date"/><layout type="log4net.Layout.PatternLayout"><param name="ConversionPattern" value="%d [%t] %-5p %c [%L] %M- %m %n" /></layout><!--过滤器--><filter type="log4net.Filter.LevelMatchFilter"><!--只保留Falat类型的log--><levelToMatch value="FATAL"/></filter><!--阻止其他日志事件被记录,若不使用该过滤器,其他类型的信息将继续输出--><filter type="log4net.Filter.DenyAllFilter"/><!--不加这个过滤器也可以--></appender><!--<root>--><!--(高) OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL (低) --><!--<level value="all" />--><!--<appender-ref ref="ColoredConsoleAppender"/>--><!--<appender-ref ref="RollingLogFileAppender"/></root>--><appender name="控制台输出" type="log4net.Appender.ConsoleAppender"><layout type="log4net.Layout.PatternLayout"><param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n"  /></layout></appender><logger name="Test"><!--指示高于此等级的方可输出--><level value="WARN"/><appender-ref ref="控制台输出" /></logger><logger name="loggerAppender"><level value="ALL"/><appender-ref ref="RollingLogFileAppender" /><appender-ref ref="ExceptionAppender" /></logger></log4net>
</configuration>

5 代码编写

5.1 添加配置信息

        在AssemblyInfo.cs中添加log4net的配置信息,指定默认配置文件为程序运行目录下的log4net.config文件,Watch标志指示当配置文件发生更改时进行重新加载,以做到实时更新配置信息.

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

5.2 代码

class Program{static void Main(string[] args){log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("log4net.config"));ILog logger = LogManager.GetLogger("Test2");ILog logger2 = LogManager.GetLogger("Test");logger.Info("信息Info");logger.Warn("异常Warn");logger.Error("错误Error");try{string a = null;a.ToString();}catch (Exception ex){logger.Fatal(ex.Message, ex);}logger2.Info("信息Info");logger2.Warn("异常Warn");logger2.Error("错误Error");Console.WriteLine("日志生成完成!");Console.ReadKey();}}

6 扩展资料连接

https://blog.csdn.net/u013066730/article/details/117248306
https://blog.csdn.net/weixin_44900027/article/details/128732197

https://www.cnblogs.com/liquorbin/archive/2012/05/11/2496284.html

http://www.lryc.cn/news/412861.html

相关文章:

  • pytest8.x版本 中文使用文档-------32.示例:使用自定义目录收集器
  • c语言第七天笔记
  • 软件测试经理工作日常随记【8】-UI自动化_加密接口的传输
  • 基于FPGA的出租车计费系统设计---第一版--郝旭帅电子设计团队
  • 商汤联合建工社共同打造“住建领域法规标准知识大模型”
  • 基于STM32的智能交通监控系统教程
  • Git和TortoiseGit的安装与使用
  • 改进YOLOv5:加入非对称卷积块ACNet,加强CNN 的内核骨架,包含VOC对比实验
  • 论文解读(12)-Transfer Learning
  • 力扣高频SQL 50题(基础版)第三十八题
  • 大模型下的视频理解video understanding
  • 【网络安全】CR/LF注入+Race Condition绕过MFA
  • 深度学习入门——卷积神经网络
  • 快团团供货大大团长帮卖团长如何线上结算和支付货款?
  • vite vue3 Webstorm multiple export width the same name “default“
  • Transformer预测模型及其Python和MATLAB实现
  • 草的渲染理论
  • Redis:十大数据类型
  • bugku-web-source
  • 一键生成视频并批量上传视频抖音、bilibili、腾讯(已打包)
  • Python WSGI服务器库之gunicorn使用详解
  • Java编程达人:每日一练,提升自我
  • (35)远程识别(又称无人机识别)(二)
  • 提供三方API接口、调用第三方接口API接口、模拟API接口(一)通过signature签名验证,避免参数恶意修改
  • CDO学习
  • 奥运会Ⅱ---谁会先抢走你的工作?
  • 用Python打造精彩动画与视频,4.3 创建动态文本和字幕
  • spring boot + vue3 接入钉钉实现扫码登录
  • 二叉树构建(从3种遍历中构建)python刷题记录
  • 计算机网络中协议与报文的关系