Asp.Net Core用NLog记录日志操作方法

时间:2021-05-28

需求

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; }}

修改完成后,如下图所示:

启动验证

启动项目,可以正常记录日志到数据库和文件:

以上就是本次介绍的全部相关知识点,感谢大家的学习和对的支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章