首页 > 编程语言 >C# .net 6 Log4net 安装、配置 以及相关问题处理

C# .net 6 Log4net 安装、配置 以及相关问题处理

时间:2023-05-05 17:47:57浏览次数:36  
标签:Log4net log4net C# info static net config public

安装log4net

首先下载相关Nuget包

安装的时候注意项目的.net版本,我这里使用的是.net 6
在根目录下面新建一个配置文件 log4net.config,并且添加下面相关配置项目

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
	<log4net>
		<!-- 将日志以回滚文件的形式写到文件中 -->
		<!-- 按日期切分日志文件,并将日期作为日志文件的名字 -->
		<!--Error-->
		<appender name="ErrorLog" type="log4net.Appender.RollingFileAppender">
			<file value="Log/" />
			<appendToFile value="true" />
			<rollingStyle value="Date" />
			<!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
			<datePattern value="&quot;ErrorLogs_&quot;yyyyMMdd&quot;.log&quot;" />
			<!--日志文件名是否为静态-->
			<StaticLogFileName value="false" />
			<!--多线程时采用最小锁定-->
			<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
			<!--布局(向用户显示最后经过格式化的输出信息)-->
			<layout type="log4net.Layout.PatternLayout">
				<conversionPattern value="%date| %-5level %newline%message%newline--------------------------------%newline" />
			</layout>
			<filter type="log4net.Filter.LevelRangeFilter">
				<levelMin value="ALL" />
				<levelMax value="FATAL" />
			</filter>
		</appender>
		<!--Error-->

		<!--Info-->
		<appender name="InfoLog" type="log4net.Appender.RollingFileAppender">
			<!--定义文件存放位置-->
			<file value="Log/" />
			<appendToFile value="true" />
			<rollingStyle value="Date" />
			<!--日志文件名是否为静态-->
			<StaticLogFileName value="false" />
			<!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
			<datePattern value="&quot;InfoLogs_&quot;yyyyMMdd&quot;.log&quot;" />
			<!--多线程时采用最小锁定-->
			<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
			<!--布局(向用户显示最后经过格式化的输出信息)-->
			<layout type="log4net.Layout.PatternLayout">
				<conversionPattern value="%date| %-5level%c %newline%message%newline--------------------------------%newline" />
			</layout>
			<filter type="log4net.Filter.LevelRangeFilter">
				<levelMin value="ALL" />
				<levelMax value="WARN" />
			</filter>
		</appender>
		<!--Info-->

		<root>
			<!-- 控制级别,由低到高:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF -->
			<!-- 比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录 -->
			<!-- 如果没有定义LEVEL的值,则缺省为DEBUG -->
			<level value="ALL" />
			<!-- 按日期切分日志文件,并将日期作为日志文件的名字 -->
			<appender-ref ref="ErrorLog" />
			<appender-ref ref="InfoLog" />
		</root>
	</log4net>
</configuration>

新增一个程序集文件 AssemblyInfo.cs
添加代码

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

调用方法

新建一个辅助类 logHelper.cs

 public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("InfoLog");//获取配置信息,这里的 InfoLog 和 log4net.config 里的配置命名一致
 public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("ErrorLog");
 public static void WriteLog(string info)
 {
   if (loginfo.IsInfoEnabled)
    {
                loginfo.Info(info);
    }
 }
public static void LogError(string info,Exception ex)
{
    if (logerror.IsErrorEnabled)
      {
        logerror.Error(info, ex);
      }
}

在主程序里面调用即可

日志文件未生成

解决方案:
1.确认配置代码存在

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

2.如果是程序发布或者打包的话,要复制log4net.config 到文件夹目录下,或者直接右键文件属性,设置为可以复制到输出目录

3.确认文件输出路径正确

标签:Log4net,log4net,C#,info,static,net,config,public
From: https://www.cnblogs.com/LearnerPing/p/17374677.html

相关文章

  • Vue el-form表单resetFields与clearValidate方法失效的三个坑
    1.在el-form标签中必须要绑定一个model,而且必须是:model,不能是v-model,这个是element-ui那边规定2.prop属性需要和上述model绑定的对象里的字段完全一致3.调用方法是this.$refs["refName"].resetFields(),this.$refs["refName"].clearValidate(["name"]),注意是this.$refs(vue3中是......
  • C++ 循环
     有的时候,可能需要多次执行同一块代码。一般情况下,语句是顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。编程语言提供了允许更为复杂的执行路径的多种控制结构。循环语句允许我们多次执行一个语句或语句组,下面是大多数编程语言中循环语句的一般形式::loop:循......
  • Xilinx Artix-7系列 FPGA器件XC7A100T-1FGG484I、XC7A200T-L2FFG1156E现场可编程门阵
    产品简介:Xilinx®Artix-7系列FPGA重新定义了成本敏感型解决方案,功耗比上一代产品降低了一半,同时为高带宽应用提供一流的收发器和信号处理能力。这些设备基于28纳米HPL工艺构建,提供一流的性能功耗比。与MicroBlaze™软处理器一起,Artix-7FPGA非常适用于便携式医疗设备、......
  • LeetCode 203. 移除链表元素
    题目链接:LeetCode203.移除链表元素本题是一个经典的单链表删除元素的题目,主要注意的有两点:如果删除的元素是不是头元素,则直接p.Next=p.Next.Next即可如果删除的元素是头元素,则需要进行单独的处理forhead!=nil&&head.Val==val{head=head.Next}ifh......
  • Python+Pandas批量合并大量excel文件
    requirments.txtet-xmlfile==1.1.0numpy==1.24.3openpyxl==3.1.2pandas==2.0.1python-dateutil==2.8.2pytz==2023.3six==1.16.0tzdata==2023.3main.pyimportosimportpandasaspddir_path=os.path.dirname(os.path.abspath(__file__))source_location=o......
  • Docker容器部署Wordpress
    启动Docker获取镜像启动MySQL设置mysql远程权限刷新权限退出容器启动容器WordPress ......
  • pycharm安装虚拟环境
    pycharm安装虚拟环境完整流程新项目1.新建一个项目2.打开设置3.进入项目->python解释器->4.选择添加虚拟环境5.配置位置,解释器(即python版本)6.检查是否进入成功旧项目1.打开项目2...其他同上3.通过requirements.txt安装依赖包简单介绍在PyCharm中使用虚拟环境的......
  • mysql8.0 使用navicat报caching_sha2_password' cannot be loaded解决方法
    安装8.0版本的mysql后,使用navicat连接时,报caching_sha2_password'cannotbeloaded的异常。原因为:8.0版本的mysq用户密码加密方式为caching_sha2_password,navicat暂不支持,需要修改下mysql的加密方式。解决过程:#(不建议用root进行连接)#1.登陆mysqlmysql-uroot-p#2.查看......
  • xcode打包导出ipa
    xcode打包导出ipa众所周知,在开发苹果应用时需要使用签名(证书)才能进行打包安装苹果IPA,作为刚接触ios开发的同学,只是学习iosapp开发内测,并没有上架appstore需求,对于苹果开发者账号认证需要支付688,真的是极大的浪费,使用appuploader,只需要注册苹果普通的账号,不需要688认证,就可以打包......
  • Visual Components正版智能工厂仿真软件
    VisualComponents是一款用于制造系统仿真的软件,可模拟制造过程,生产线状况以及整体制造系统。用户可以通过VisualComponents实现自动化工厂生产计划、机器人控制和3D模拟等功能。 1、具有强大的3D仿真功能,可以通过该软件创建真实场景,并在此基础上进行各种操作。用户可以在其......