.net6使用log4net生成日志文件和日志写入sqlserver数据库

下面这是我使用NLog生成的配置
.net6使用NLog生成日志文件和日志写入sqlserver数据库

创建sqlserver的日志表
CREATE TABLE [dbo].[Log4Net] (
    [Id] [int] IDENTITY (1, 1) NOT NULL,
    [Date] [datetime] NOT NULL,
    [Thread] [varchar] (255) NOT NULL,
    [Level] [varchar] (50) NOT NULL,
    [Logger] [varchar] (255) NOT NULL,
    [Message] [varchar] (4000) NOT NULL,
    [Exception] [varchar] (2000) NULL
)
   
安装的NuGet包
log4net.config的配置,文件的配置是一个日期文件夹中4个txt文件
2022-03-06
Debug.log
Error.log
Info.log
Warn.log
<?xml version="1.0" encoding="utf-8" ?>
<log4net>

	<!-- 错误 Error.log-->
	<appender name="ErrorLog" type="log4net.Appender.RollingFileAppender">
		<!--目录路径,可以是相对路径或绝对路径-->
		<param name="File" value="logs\"/>
		<!--文件名,按日期生成文件夹-->
		<param name="DatePattern" value="/yyyy-MM-dd/'Error.log'"/>
		<!--追加到文件-->
		<appendToFile value="true"/>
		<!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
		<rollingStyle value="Composite"/>
		<!--写到一个文件-->
		<staticLogFileName value="false"/>
		<!--单个文件大小。单位:KB|MB|GB-->
		<maximumFileSize value="200MB"/>
		<!--最多保留的文件数,设为"-1"则不限-->
		<maxSizeRollBackups value="-1"/>
		<!--日志格式-->
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="[%d{HH:mm:ss}]%m%n"/>
		</layout>
		<filter type="log4net.Filter.LevelRangeFilter">
			<param name="LevelMin" value="ERROR" />
			<param name="LevelMax" value="ERROR" />
		</filter>
	</appender>

	<!-- 警告 Warn.log-->
	<appender name="WarnLog" type="log4net.Appender.RollingFileAppender">
		<!--目录路径,可以是相对路径或绝对路径-->
		<param name="File" value="logs\"/>
		<!--文件名,按日期生成文件夹-->
		<param name="DatePattern" value="/yyyy-MM-dd/'Warn.log'"/>
		<!--追加到文件-->
		<appendToFile value="true"/>
		<!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
		<rollingStyle value="Composite"/>
		<!--写到一个文件-->
		<staticLogFileName value="false"/>
		<!--单个文件大小。单位:KB|MB|GB-->
		<maximumFileSize value="200MB"/>
		<!--最多保留的文件数,设为"-1"则不限-->
		<maxSizeRollBackups value="-1"/>
		<!--日志格式-->
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="[%d{HH:mm:ss}]%m%n"/>
		</layout>
		<filter type="log4net.Filter.LevelRangeFilter">
			<param name="LevelMin" value="WARN" />
			<param name="LevelMax" value="WARN" />
		</filter>
	</appender>

	<!-- 信息 Info.log-->
	<appender name="InfoLog" type="log4net.Appender.RollingFileAppender">
		<!--目录路径,可以是相对路径或绝对路径-->
		<param name="File" value="logs\"/>
		<!--文件名,按日期生成文件夹-->
		<param name="DatePattern" value="/yyyy-MM-dd/'Info.log'"/>
		<!--追加到文件-->
		<appendToFile value="true"/>
		<!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
		<rollingStyle value="Composite"/>
		<!--写到一个文件-->
		<staticLogFileName value="false"/>
		<!--单个文件大小。单位:KB|MB|GB-->
		<maximumFileSize value="200MB"/>
		<!--最多保留的文件数,设为"-1"则不限-->
		<maxSizeRollBackups value="-1"/>
		<!--日志格式-->
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="[%d{HH:mm:ss}]%m%n"/>
		</layout>
		<filter type="log4net.Filter.LevelRangeFilter">
			<param name="LevelMin" value="INFO" />
			<param name="LevelMax" value="INFO" />
		</filter>
	</appender>

	<!-- 调试 Debug.log-->
	<appender name="DebugLog" type="log4net.Appender.RollingFileAppender">
		<!--目录路径,可以是相对路径或绝对路径-->
		<param name="File" value="logs\"/>
		<!--文件名,按日期生成文件夹-->
		<param name="DatePattern" value="/yyyy-MM-dd/'Debug.log'"/>
		<!--追加到文件-->
		<appendToFile value="true"/>
		<!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
		<rollingStyle value="Composite"/>
		<!--写到一个文件-->
		<staticLogFileName value="false"/>
		<!--单个文件大小。单位:KB|MB|GB-->
		<maximumFileSize value="200MB"/>
		<!--最多保留的文件数,设为"-1"则不限-->
		<maxSizeRollBackups value="-1"/>
		<!--日志格式-->
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="[%d{HH:mm:ss}]%m%n"/>
		</layout>
		<filter type="log4net.Filter.LevelRangeFilter">
			<param name="LevelMin" value="DEBUG" />
			<param name="LevelMax" value="DEBUG" />
		</filter>
	</appender>
	<!--数据库配置-->
	<appender name="logAppender" type="log4net.Appender.ADONetAppender">
		<bufferSize value="10"/>
		<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <--链接数据库配置-->
		<connectionString value="server=.;database=Net6Learning;user id=sa;password=123456"/>
		<commandText value="INSERT INTO Log4Net ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)"/>
		<parameter>
			<parameterName value="@log_date"/>
			<dbType value="DateTime"/>
			<layout type="log4net.Layout.RawTimeStampLayout"/>
		</parameter>
		<parameter>
			<parameterName value="@thread"/>
			<dbType value="String"/>
			<size value="255"/>
			<layout type="log4net.Layout.PatternLayout">
				<conversionPattern value="%thread"/>
			</layout>
		</parameter>
		<parameter>
			<parameterName value="@log_level"/>
			<dbType value="String"/>
			<size value="50"/>
			<layout type="log4net.Layout.PatternLayout">
				<conversionPattern value="%level"/>
			</layout>
		</parameter>
		<parameter>
			<parameterName value="@logger"/>
			<dbType value="String"/>
			<size value="255"/>
			<layout type="log4net.Layout.PatternLayout">
				<conversionPattern value="%logger"/>
			</layout>
		</parameter>
		<parameter>
			<parameterName value="@message"/>
			<dbType value="String"/>
			<size value="4000"/>
			<layout type="log4net.Layout.PatternLayout">
				<conversionPattern value="%message"/>
			</layout>
		</parameter>
		<parameter>
			<parameterName value="@exception"/>
			<dbType value="String"/>
			<size value="2000"/>
			<layout type="log4net.Layout.ExceptionLayout"/>
		</parameter>
	</appender>
	<!--根配置-->
	<root>
		<!--日志级别:可选值: OFF>FATAL>ERROR> WARN > INFO > DEBUG>ALL-->
		<priority value="ALL"/>
		<level value="WARN"/>  <--这个值用来过滤的-->
		<appender-ref ref="ErrorLog" />
		<appender-ref ref="WarnLog" />
		<appender-ref ref="InfoLog" />
		<appender-ref ref="DebugLog" />
		<appender-ref ref="logAppender" />
	</root>
</log4net>
Program.cs里的配置
成功后的效果
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值