.net 6中使用log4net写sqlserver数据库日志
小白浏览:7562022-07-31 11:53:05本文累计收益:0我也要赚钱

net 6中使用log4net必须添加log4net、Microsoft.Extensions.Logging.Log4Net.AspNetCore两个引用。

使用之前必须在项目中添加log4net的配置文件Log4Net.Config,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<log4net>

	<!--SqlServer形式-->
	<!--log4net日志配置:http://logging.apache.org/log4net/release/config-examples.html -->
	<appender name="AdoNetAppender_SqlServer" type="log4net.Appender.AdoNetAppender">
		<!--日志缓存写入条数 设置为0时只要有一条就立刻写到数据库-->
		<bufferSize value="0" />
		<connectionType value="System.Data.SqlClient.SqlConnection,System.Data.SqlClient, Version=4.6.1.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
		<connectionString value="Data Source=.;Initial Catalog=LogManager;Persist Security Info=True;User ID=sa;Password=t145879" />
		<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>
		<!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
		<!--OFF:0-->
		<!--FATAL:FATAL-->
		<!--ERROR: ERROR,FATAL-->
		<!--WARN: WARN,ERROR,FATAL-->
		<!--INFO: INFO,WARN,ERROR,FATAL-->
		<!--DEBUG: INFO,WARN,ERROR,FATAL-->
		<!--ALL: DEBUG,INFO,WARN,ERROR,FATAL-->
		<priority value="ALL"/>
		<level value="INFO"/>
		<appender-ref ref="AdoNetAppender_SqlServer" />
	</root>
</log4net>

然后在Program.cs文件中进行注册,注册代码如下:

var builder = WebApplication.CreateBuilder(args);
#region log4net
{
    //引用log4net
    //引用Microsoft.Extensions.Logging.Log4Net.AspNetCore
    builder.Logging.AddLog4Net("CfgFile/Log4Net.Config");
}
#endregion

注册完成后在程序里面就可以使用了,使用方法如下:

public class FirstController : Controller
    {
        private readonly ILogger<FirstController> _Logger;
        private readonly ILoggerFactory _LoggerFactory;
        public FirstController(ILogger<FirstController> logger,ILoggerFactory loggerFactory) {
            this._Logger = logger;
            this._Logger.LogInformation($"{this.GetType().Name}被构造了log1");
            this._LoggerFactory = loggerFactory;
            ILogger<FirstController> _Logger2 =
            this._LoggerFactory.CreateLogger<FirstController>();
            _Logger2.LogInformation($"{this.GetType().Name}被构造了log2");
        }
        public IActionResult Index()
        {
            ILogger<FirstController> _Logger3 =
            this._LoggerFactory.CreateLogger<FirstController>();
            _Logger3.LogInformation($"index被执行了");

            this._Logger.LogInformation($"index被执行了");
            return View();
        }
    }

 

评论列表
发表评论
+ 关注