项目中使用NLog记录日志,很好用,之前一直放在文本文件中,准备放到db中,方便查询。
项目使用了Mysql,所以日志也放到Mysql上,安装NLog不用说,接着你需要安装Mysql.Data安装包:
Install-Package MySql.Data
接着打开你的NLog,新增一个 target
:
<target xsi:type="Database" name="mysqlDb" dbprovider="MySql.Data.MySqlClient.MySqlConnection, MySql.Data" connectionstring="Server=127.0.0.1;User Id=root;Password=root;Database=nlog;Character Set=utf8;SslMode=none;">
</target>
如果你的数据库连接不支持SSL的话(开发机一般都没有吧),一定要加上
SslMode=none
创建数据库脚本:
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;
然后修改下NLog中刚刚我们添加的 target
:
<target xsi:type="Database" name="mysqlDb" dbprovider="MySql.Data.MySqlClient.MySqlConnection, MySql.Data" connectionstring="Server=127.0.0.1;User Id=root;Password=root;Database=nlog;Character Set=utf8;SslMode=none;">
<commandtext>
insert into log (
Application, Logged, Level, Message,
Username,
ServerName, Url,RemoteAddress,
Logger, CallSite, Exception
) values (
@Application, @Logged, @Level, @Message,
@Username,
@ServerName, @Url,@RemoteAddress,
@Logger, @Callsite, @Exception
);
</commandtext>
<parameter name="@application" layout="yourappname">
<parameter name="@logged" layout="${date}">
<parameter name="@level" layout="${level}">
<parameter name="@message" layout="${message}">
<parameter name="@username" layout="${identity}">
<parameter name="@serverName" layout="${aspnet-request-host}">
<parameter name="@url" layout="${aspnet-request-url:IncludeQueryString=true}">
<parameter name="@remoteAddress" layout="${aspnet-Request-ip}">
<parameter name="@logger" layout="${logger}">
<parameter name="@callSite" layout="${callsite}">
<parameter name="@exception" layout="${exception:tostring}">
</parameter></parameter></parameter></parameter></parameter></parameter></parameter></parameter></parameter></parameter></parameter></target>
现在你可以启动你的项目,执行没有问题,但是在上述 aspnet-request
开头的一些值没有获取到,都为空,这是因为没有安装 NLog.Web
包,使用Nuget或者在Nuget控制台输入:
Install-Package NLog.Web
再次运行,你会看到你的日志中已经记录的很全面了。
之前很久没写,觉得很多没必要写,但现在发现,还是记录下来比较好,或许对你有用呢,对吧!
Original: https://www.cnblogs.com/inday/p/asp-net-core-use-nlog-for-mysql-some-issues.html
Author: James.Ying
Title: Asp.Net Core使用NLog+Mysql的几个小问题
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/602443/
转载文章受原作者版权保护。转载请注明原作者出处!