sqlserver日志文件在哪_Asp.Net Core中使用NLog记录日志

Asp.Net Core 3.0,+NLog 4.6.7,+NLog.Web.AspNetCore 4.9.0

摘要:NLog在asp.net网站中的使用,NLog日志写入数据库,NLog日志写入文件
案例代码

需求#

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

b62bf2a5b1871b2281e0dd5aa9f9cc80.png

NLog.config#

配置文件内容#

网站根目录下新建NLog.config配置文件,记得右击该文件“属性”,复制到输出目录:“始终复制”

f9dee5118d8c16e71834b6e1ecf92406.png

NLog.config文件内容:

配置文件解读#

  • nlog根节点: autoReload属性,true时,如果NLog.config文件有变动,会自动应用新配置(但是会有延迟,过几秒才会应用起来) internalLogLevel属性,设定后,输出的是NLog内部自己的日志记录,如果遇到NLog异常/配置文件没配好,可以把Off改为Trace或Debug来查看NlogRecords.log里的内容 internalLogFile属性,可以设定路径,例如默认的c:emplog-internal.log
  • 新增了extensions节点,因为引用了NLog.Web.AspNetCore包
  • targets节点中是各种记录方式的配置
  • 第一个target节点,可以看到name是log_database,这里的name和下方logger中writeTo属性对应 xsi:type="Database",就是写入数据库了 dbProvider属性是数据库适配器,MySQL是MySql.Data.MySqlClient.MySqlConnection, MySql.Data,SQL server是Microsoft.Data.SqlClient,其他数据库适配器可在官方文档内查看 connectionString即连接字符串了 commandText子节点是插入数据库时insert语句,可以看到我这里是写入到TblLogrecords表,表结构下文会展示出来 parameter子节点是insert语句的各个参数: 有个name="@LogType"参数,layout="${event-properties:item=LogType}",表示@LogType参数的值从event-properties中的LogType中取,这个后文会写到用法 其余参数均是NLog自带的内容,aspnet-开头的是NLog.Web.AspNetCore包中提供的方法 layout render官方文档
  • 第二个target节点,可以看到name是log_file,这里的name和下方logger中writeTo属性对应 xsi:type="File",即写入到文件 fileName属性是文件名,这里是写入到当前目录下的logs文件夹,并且按日期归档 layout属性是写入日志的格式
  • rules节点是各个日志记录器logger的配置 第一个logger配置跳过所有Microsoft组件的日志记录,final 标记当前规则为最后一个规则。其后的规则即时匹配也不会被运行。 第二个logger name="logdb",该日志记录器名为logdb,是适配log_database规则,即写入数据库,如果要适配多条规则,用逗号隔开 其余规则可以参考博客

数据库配置#

数据表结构#

这里数据库为TestNLog:

网站配置连接#

appsettings.json中增加ConectionStrings节点:

统一日志记录方法#

网站下新建CommonUtils文件夹,添加NLogUtil.cs文件(包含LogType定义):

配置NLog依赖注入#

网站Program.cs文件中,在CreateHostBuilder方法中添加以下内容:

完成后如下图所示:

4db6f239662884d68724511464857499.png

启动项目同步连接字符串#

修改网站启动Program.cs中的逻辑:

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

365699891b9c34bce148e7777de04b83.png

启动验证#

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

391597fc4e4c37bef826554148be4883.png

作者: kasnti

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值