首页 > 编程语言 >C#中增加log4net步骤

C#中增加log4net步骤

时间:2024-02-26 13:01:01浏览次数:14  
标签:log4net 配置文件 C# 步骤 NuGet 日志 config

要求:日志功能:info, debug ,error 三种级别的日志均可以通过log 日志的方式查看,支持日志按天分文件保存文件夹; 添加日志自动清除策略,支持可配置,默认保留30天

第一步:在NuGet中添加log4net

工具->NuGet包管理器->管理解决方案的NuGet程序包

 

 

第二步:增加配置文件log4net.config

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
	<root>
		<!--打印级别,如果要打Debug日志,请改为BEBUG-->
		<level value="INFO" />
		<appender-ref ref="ConsoleOutput" />
		<appender-ref ref="RollingFileDebug" />
		<appender-ref ref="RollingFileInfo" />
		<appender-ref ref="RollingFileError" />
	</root>
	<appender name="ConsoleOutput" type="log4net.Appender.ConsoleAppender">
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="[%-5level] [%date{yyyy-MM-dd HH:mm:ss.fff}] %24logger [%line] [%t] [%M] - %message%newline" />
		</layout>
		<filter type="log4net.Filter.LevelMatchFilter">
			<levelToMatch value="INFO"/>
		</filter>
		<filter type="log4net.Filter.DenyAllFilter" />
	</appender>
	<appender name="RollingFileDebug" type="log4net.Appender.RollingFileAppender">
		<file type="log4net.Util.PatternString" value="logs/debug/client_debug_log_"/>
		<appendToFile value="true"/>
		<encoding value="utf-8" />
		<maxSizeRollBackups value="30"/>
		<maximumFileSize value="10MB"/>
		<staticLogFileName value="false"/>
		<datePattern value="yyyy-MM-dd".log""/>
		<rollingStyle value="Date"/>
		<!--保证在日志分割时,新日志的序号会添加在后缀名之前-->
		<preserveLogFileNameExtension value="true"/>
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="[%-5level] [%date{yyyy-MM-dd HH:mm:ss.fff}] %24logger [%line] [%t] [%M] - %message%newline" />
		</layout>
		<lockingmodel type="log4net.appender.fileappender+minimallock" />
		<filter type="log4net.Filter.LevelRangeFilter">
			<levelMin value="DEBUG" />
			<levelMax value="DEBUG" />
		</filter>
	</appender>
	<appender name="RollingFileInfo" type="log4net.Appender.RollingFileAppender">
		<file type="log4net.Util.PatternString" value="logs/info/client_info_log_"/>
		<appendToFile value="true"/>
		<encoding value="utf-8" />
		<maxSizeRollBackups value="30"/>
		<maximumFileSize value="10MB"/>
		<staticLogFileName value="false"/>
		<datePattern value="yyyy-MM-dd".log""/>
		<rollingStyle value="Date"/>
		<!--保证在日志分割时,新日志的序号会添加在后缀名之前-->
		<preserveLogFileNameExtension value="true"/>
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="[%-5level] [%date{yyyy-MM-dd HH:mm:ss.fff}] %24logger [%line] [%t] [%M] - %message%newline" />
		</layout>
		<lockingmodel type="log4net.appender.fileappender+minimallock" />
		<filter type="log4net.Filter.LevelRangeFilter">
			<levelMin value="INFO" />
			<levelMax value="ERROR" />
		</filter>
	</appender>
	<appender name="RollingFileError" type="log4net.Appender.RollingFileAppender">
		<file type="log4net.Util.PatternString" value="logs/error/client_error_log_"/>
		<appendToFile value="true"/>
		<encoding value="utf-8" />
		<maxSizeRollBackups value="30"/>
		<maximumFileSize value="10MB"/>
		<staticLogFileName value="false"/>
		<datePattern value="yyyy-MM-dd".log""/>
		<rollingStyle value="Date"/>
		<!--保证在日志分割时,新日志的序号会添加在后缀名之前-->
		<preserveLogFileNameExtension value="true"/>
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="[%-5level] [%date{yyyy-MM-dd HH:mm:ss.fff}] %24logger [%line] [%t] [%M] - %message%newline" />
		</layout>
		<lockingmodel type="log4net.appender.fileappender+minimallock" />
		<filter type="log4net.Filter.LevelRangeFilter">
			<levelMin value="ERROR" />
			<levelMax value="ERROR" />
		</filter>
	</appender>
</log4net>

  

第三步:在Main中增加一行代码(用于从指定的XML配置文件(在这个例子中是log4net.config)中加载日志配置)

XmlConfigurator.Configure(new FileInfo("log4net.config"));

标签:log4net,配置文件,C#,步骤,NuGet,日志,config
From: https://www.cnblogs.com/guobm/p/18034092

相关文章

  • 从零开始写 Docker(二)---优化:使用匿名管道传递参数
    本文为从零开始写Docker系列第二篇,主要在mydockerrun命令基础上优化参数传递方式,改为使用runC同款的匿名管道传递参数。如果你对云原生技术充满好奇,想要深入了解更多相关的文章和资讯,欢迎关注微信公众号。扫描下方二维码或搜索公众号【探索云原生】即可订阅完整代......
  • [Docker] 基于CENTOS7的Docker版本升级
    0序环境信息OS:CENTOS7.9.2009DockerVersion:18.06.3-ce=>25.0.3-1.el71升级过程Step1卸载低版本dockerStep1.1检查docker版本#查看版本(方法1)dockerversion#查看版本(方法2)rpm-qa|grepdocker#查看版本(方法3)yumlistinstalled|g......
  • 在Docker中设置Redis的密码
    目录1,介绍2,实现“DockerRedis设置密码”的整体流程3,具体实现步骤4,结论1,介绍Docker是一个开源的应用容器引擎,可以自动化部署、扩展应用程序。它可以帮助开发人员将应用程序及其依赖项打包到一个可移植的容器中,然后在任何环境中运行。Redis是一个开源的内存数据结构存储系统,它可以......
  • OSError: Error no file named pytorch_model.bin, tf_model.h5, model.ckpt.index or
       问题场景,对模型做微调任务,下载模型文件时,报如标题所示的错误,   错误发生原因,下载时在远程模型目录里面寻找以上文件不可得,就会报错,具体原因是modelscope的模型文件目录里面没有以上文件,但实际上https://modelscope.cn/models/qwen/Qwen1.5-4B-Chat/files这个目录......
  • AtCoder Beginner Contest 342
    D.SquarePair给你一个数组,最多2e5个元素,每个元素的范围是0到2e5问选出两个元素,乘积为完全平方数的情况有多少?(任选a[i]a[j],且满足i<j)一种思路是用map记录数组的元素,选出一个元素x后,枚举所有完全平方数,如果完全平方数可以整除选出的这个元素且整除的结果y在map......
  • makecab命令工具 无损数据压缩工具
    CabinetMaker-无损数据压缩工具MAKECAB[/V[n]][/D变量=值...][/L目录]源文件[目标文件]MAKECAB[/V[n]][/D变量=值...]/F指令文件[...]源文件要压缩的文件。目标文件压缩后的文件名。如果省略,将用下划线(_)替换源文件名的最后一个字符作为目标文件名。......
  • Taurus.MVC WebMVC 入门开发教程2:一个简单的页面呈现
    前言:在上一篇中,我们了解了如何下载、配置和运行Taurus.MVCWebMVC框架。现在,让我们开始编写一个简单的页面并进行呈现。步骤1:创建控制器首先,我们需要创建一个控制器来处理页面呈现的逻辑。在VisualStudio中,右键单击项目文件夹,选择「添加」->「类」。在弹出的对话框中,......
  • 记一次 splice 导致 io.Copy 阻塞的排查过程
    记一次splice导致io.Copy阻塞的排查过程简而言之,net.TCPConn的ReadFrom零拷贝实现splice在1.21.0-1.21.4删除了SPLICE_F_NONBLOCK参数,导致在CentOS7.2(内核版本3.10.0)上splice被阻塞。相关的issue为https://github.com/golang/go/issues/59041这个问题......
  • K8S测试lcoal StorageClass PVC
    测试lcoalStorageClassvilocal-path.yaml---apiVersion:v1kind:PersistentVolumeClaimmetadata:name:local-path-pvcspec:storageClassName:nfs#<===使用哪个SCaccessModes:-ReadWriteOnceresources:requests:storage:10Gi---......
  • Flutter中如何计算一个Container可以完美填充多少文字
    要想知道一个Container可以填满多少个文字,我们只需算出一行可以填充的文字数量,再算出可以填充的最大行数,将两者相乘就行。遇到问题先干嘛?当然是用搜索引擎先检索一下答案。我检索到了一篇标题为《Flutter-如何计算文字宽高》的文章(因为我在站内没有搜到这篇文章,所有有兴趣的可......