.Net Core WebApi 使用NLog+MySQL自动化
直接进入正题
1、引入nuget包(注:这里我都是装的最新的包):
Install-Package NLog -Version 4.5.8
Install-Package NLog.Web.AspNetCore -Version 4.6.0
Install-Package MySql.Data -Version 8.0.12
2、新建log表,执行如下sql(这边其实也是可以配置,让NLog自动去生成NLog表,有兴趣的同学可以自己试试):
CREATE TABLE `log` (
`Id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`Application` varchar(50) DEFAULT NULL,
`Logged` datetime DEFAULT NULL,
`Level` varchar(50) DEFAULT NULL,
`Message` text DEFAULT NULL,
`UserName` varchar(512) Default Null,
`ServerName` text Default Null,
`Url` text NULL,
`RemoteAddress` nvarchar(100) NULL,
`Logger` text DEFAULT NULL,
`Callsite` text DEFAULT NULL,
`Exception` text DEFAULT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
3、包引入之后,会生成一个NLog.config文件,NLog几乎所有操作都是通过这个配置文件完成的,我们在targets节点添加一个新的target,如图:不难看出其实它配置了数据库连接字符串,以及插入的log表的sql语句。
4、设置记录日志规则(这里我入库最小规则是Error,看业务需求自己定):
5、NLog服务依赖注入(StartUp.cs):
6、配置web请求(Program.cs),这一步如果不配置的话,相关的url,ip这些都会没有数据的:
7、结果:
8、总结,个人感觉,其实这个方式的原理跟直接使用Ado.net自己建表维护日志没多大差别,优势就是:直接全部通过配置完成,高效,低成本