需求
1.日志自动写入到数据库、写入到文件
2.appsettings.json数据库连接更改后,不需要去改NLog中的连接地址,启动网站或项目时自动检测变动然后去更改,以appsettings.json为准,保持同步。
3.写入日志时,除了NLog自带的字段,新增LogType自定义字段记录日志类型,例如网站日志、中间件日志等
4.统一的写日志方法,不用每次get一个logger对象(或依赖注入)来记日志
安装包
在nuget中安装NLog和NLog.Web.AspNetCore ,这两个是NLog相关的包。
还需要安装NLog写入数据库的数据库适配器,我这里写入到MySQL数据库,所以安装MySql.Data
如果是写入到SQL server数据库,需要安装Microsoft.Data.SqlClient
NLog.config 配置文件内容
网站根目录下新建NLog.config配置文件,记得右击该文件“属性”,复制到输出目录:“始终复制”
NLog.config文件内容:
<?xml version="1.0" encoding="utf-8"?><nlog xmlns="http://monUtils;//using Microsoft.Extensions.DependencyInjection;public static void Main(string[] args){ //CreateHostBuilder(args).Build().Run(); var host = CreateHostBuilder(args).Build(); try { using (IServiceScope scope = host.Services.CreateScope()) { IConfiguration configuration = scope.ServiceProvider.GetRequiredService<IConfiguration>(); //获取到appsettings.json中的连接字符串 string sqlString = configuration.GetSection("ConectionStrings:MySqlConnection").Value; //确保NLog.config中连接字符串与appsettings.json中同步 NLogUtil.EnsureNlogConfig("NLog.config", sqlString); } //throw new Exception("测试异常");//for test //其他项目启动时需要做的事情 //code NLogUtil.WriteDBLog(NLog.LogLevel.Trace, LogType.Web, "网站启动成功"); host.Run(); } catch (Exception ex) { //使用nlog写到本地日志文件(万一数据库没创建/连接成功) string errorMessage = "网站启动初始化数据异常"; NLogUtil.WriteFileLog(NLog.LogLevel.Error, LogType.Web, errorMessage, new Exception(errorMessage, ex)); NLogUtil.WriteDBLog(NLog.LogLevel.Error, LogType.Web, errorMessage, new Exception(errorMessage, ex)); throw; }}修改完成后,如下图所示:
启动验证
启动项目,可以正常记录日志到数据库和文件:
以上就是本次介绍的全部相关知识点,感谢大家的学习和对的支持。