net7 使用log4net组件

组件引用

nuget引用两个组件,缺一不可;
log4net
Microsoft.Extensions.Logging.Log4Net.AspNetCore

组件配置文件

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
	<!--根配置-->
	<root>
		<!--日志级别:可选值: Fatal > ERROR > WARN > INFO > DEBUG -->
		<level value="ERROR"/>
		<level value="Fatal"/>
		<level value="WARN"/>
		<level value="INFO"/>
		<level value="DEBUG"/>
		<appender-ref ref="FatalLog" />
		<appender-ref ref="ErrorLog" />
		<appender-ref ref="WarnLog" />
		<appender-ref ref="InfoLog" />
		<appender-ref ref="DebugLog" />
		<appender-ref ref="ColoreConsole" />
		<appender-ref ref="Console" />
	</root>
	<!--控制台高亮输出-->
	<appender name="ColoreConsole" type="log4net.Appender.ColoredConsoleAppender">
		<mapping>
			<level value="ERROR" />
			<foreColor value="White" />
			<backColor value="Red, HighIntensity" />
		</mapping>
		<mapping>
			<level value="DEBUG" />
			<backColor value="Green" />
		</mapping>
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
		</layout>
	</appender>
	<!--控制台常规输出-->
	<appender name="Console" type="log4net.Appender.ConsoleAppender">
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
		</layout>
	</appender>
	<!-- 致命 Fatal-->
	<appender name="FatalLog" type="log4net.Appender.RollingFileAppender">
		<!--目录路径,可以是相对路径或绝对路径-->
		<param name="File" value="log/fatal"/>
		<!--来使用最小锁定模型 以允许多个进程可以写入同一个文件 -->
		<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
		<!--文件名,按日期生成文件夹-->
		<param name="DatePattern" value="/yyyy-MM-dd.&quot;log&quot;"/>
		<!--追加到文件-->
		<appendToFile value="true"/>
		<!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
		<rollingStyle value="Composite"/>
		<!--写到一个文件-->
		<staticLogFileName value="false"/>
		<!--单个文件大小。单位:KB|MB|GB-->
		<maximumFileSize value="10MB"/>
		<!--最多保留的文件数,设为"-1"则不限-->
		<maxSizeRollBackups value="-1"/>
		<!--日志格式-->
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/>
		</layout>
		<filter type="log4net.Filter.LevelRangeFilter">
			<param name="LevelMin" value="Fatal" />
			<param name="LevelMax" value="Fatal" />
		</filter>
	</appender>
	<!-- 错误 Error-->
	<appender name="ErrorLog" type="log4net.Appender.RollingFileAppender">
		<!--目录路径,可以是相对路径或绝对路径-->
		<param name="File" value="log/err"/>
		<!--来使用最小锁定模型 以允许多个进程可以写入同一个文件 -->
		<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
		<!--文件名,按日期生成文件夹-->
		<param name="DatePattern" value="/yyyy-MM-dd.&quot;log&quot;"/>
		<!--追加到文件-->
		<appendToFile value="true"/>
		<!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
		<rollingStyle value="Composite"/>
		<!--写到一个文件-->
		<staticLogFileName value="false"/>
		<!--单个文件大小。单位:KB|MB|GB-->
		<maximumFileSize value="10MB"/>
		<!--最多保留的文件数,设为"-1"则不限-->
		<maxSizeRollBackups value="-1"/>
		<!--日志格式-->
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/>
		</layout>
		<filter type="log4net.Filter.LevelRangeFilter">
			<param name="LevelMin" value="ERROR" />
			<param name="LevelMax" value="ERROR" />
		</filter>
	</appender>

	<!-- 警告 Warn-->
	<appender name="WarnLog" type="log4net.Appender.RollingFileAppender">
		<!--目录路径,可以是相对路径或绝对路径-->
		<param name="File" value="log/warn"/>
		<!--来使用最小锁定模型 以允许多个进程可以写入同一个文件 -->
		<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
		<!--文件名,按日期生成文件夹-->
		<param name="DatePattern" value="/yyyy-MM-dd&quot;.log&quot;"/>
		<!--追加到文件-->
		<appendToFile value="true"/>
		<!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
		<rollingStyle value="Composite"/>
		<!--写到一个文件-->
		<staticLogFileName value="false"/>
		<!--单个文件大小。单位:KB|MB|GB-->
		<maximumFileSize value="10MB"/>
		<!--最多保留的文件数,设为"-1"则不限-->
		<maxSizeRollBackups value="-1"/>
		<!--日志格式-->
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/>
		</layout>
		<filter type="log4net.Filter.LevelRangeFilter">
			<param name="LevelMin" value="WARN" />
			<param name="LevelMax" value="WARN" />
		</filter>
	</appender>

	<!-- 信息 Info-->
	<appender name="InfoLog" type="log4net.Appender.RollingFileAppender">
		<!--目录路径,可以是相对路径或绝对路径-->
		<param name="File" value="log/info"/>
		<!--来使用最小锁定模型 以允许多个进程可以写入同一个文件 -->
		<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
		<!--文件名,按日期生成文件夹-->
		<param name="DatePattern" value="/yyyy-MM-dd&quot;.log&quot;"/>
		<!--追加到文件-->
		<appendToFile value="true"/>
		<!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
		<rollingStyle value="Composite"/>
		<!--写到一个文件-->
		<staticLogFileName value="false"/>
		<!--单个文件大小。单位:KB|MB|GB-->
		<maximumFileSize value="10MB"/>
		<!--最多保留的文件数,设为"-1"则不限-->
		<maxSizeRollBackups value="-1"/>
		<!--日志格式-->
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/>
		</layout>
		<filter type="log4net.Filter.LevelRangeFilter">
			<param name="LevelMin" value="INFO" />
			<param name="LevelMax" value="INFO" />
		</filter>
	</appender>

	<!-- 调试 Debug-->
	<appender name="DebugLog" type="log4net.Appender.RollingFileAppender">
		<!--目录路径,可以是相对路径或绝对路径-->
		<param name="File" value="log/debug"/>
		<!--来使用最小锁定模型 以允许多个进程可以写入同一个文件 -->
		<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
		<!--文件名,按日期生成文件夹-->
		<param name="DatePattern" value="/yyyy-MM-dd&quot;.log&quot;"/>
		<!--追加到文件-->
		<appendToFile value="true"/>
		<!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
		<rollingStyle value="Composite"/>
		<!--写到一个文件-->
		<staticLogFileName value="false"/>
		<!--单个文件大小。单位:KB|MB|GB-->
		<maximumFileSize value="10MB"/>
		<!--最多保留的文件数,设为"-1"则不限-->
		<maxSizeRollBackups value="-1"/>
		<!--日志格式-->
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/>
		</layout>
		<filter type="log4net.Filter.LevelRangeFilter">
			<param name="LevelMin" value="DEBUG" />
			<param name="LevelMax" value="DEBUG" />
		</filter>
	</appender>
</log4net>

组件代码设置

build前完成设置
1、Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);是由于配置文件使用ColoredConsoleAppender,如果不设置,日志组件初始化会报错。Could not create Appender [Console] of type [log4net.Appender.ColoredConsoleAppender]. Reported error
2、指定log4.config配置文件

image

组件调用

ILog log = LogManager.GetLogger("");
log.Debug("debug");
log.Info("info"); 
log.Error("error");
log.Fatal("error");
log.Warn("error"); 
posted @   姜小牙  阅读(618)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示