Asp.Net Core使用NLog+Mysql的几个小问题
2018-06-25 20:20
621 查看
项目中使用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;" />
如果你的数据库连接不支持SSL的话(开发机一般都没有吧),一定要加上
SslMode=none
接着你需要创建数据库和表,建议你手动去mysql执行脚本,如果想自动创建的话,你可以查看这里
创建数据库脚本:
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}" /> </target>
可以看到在
commandText中是添加日志的sql语句,下面就是各参数的值,使用的默认[layout]((https://github.com/NLog/NLog/wiki/Layout-Renderers),你也可以自定义layout。
现在你可以启动你的项目,执行没有问题,但是在上述
aspnet-request开头的一些值没有获取到,都为空,这是因为没有安装
NLog.Web包,使用Nuget或者在Nuget控制台输入:
Install-Package NLog.Web
再次运行,你会看到你的日志中已经记录的很全面了。
之前很久没写,觉得很多没必要写,但现在发现,还是记录下来比较好,或许对你有用呢,对吧!
相关文章推荐
- Asp.Net Core使用MySql.Data连接MySql示例
- docker4dotnet #3 在macOS上使用Visual Studio Code和Docker开发asp.net core和mysql应用
- docker4dotnet #3 在macOS上使用Visual Studio Code和Docker开发asp.net core和mysql应用
- asp.net core使用mysql.data和dapper操作mysql数据库
- Asp.Net Core 2.0 之旅---NLog日志的使用教程
- Asp.Net Core 项目搭建 基础配置 和MySql 的使用
- docker4dotnet #3 在macOS上使用Visual Studio Code和Docker开发asp.net core和mysql应用
- IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题
- ASP.NET Core 新建线程中使用依赖注入的问题
- EF Core使用SQL调用返回其他类型的查询 ASP.NET Core 2.0 使用NLog实现日志记录 CSS 3D transforms cSharp:use Activator.CreateInstance with an Interface? SqlHelper DBHelper C# Thread.Abort方法真的让线程停止了吗? 注意!你的Thread.Abort方法真
- ASP.NET Core:使用EntityFrameworkCore操作MySql来丰富仓储模块
- ASP.NET Boilerplate 学习 AspNet Core2 浏览器缓存使用 c#基础,单线程,跨线程访问和线程带参数 wpf 禁用启用webbroswer右键菜单 EF Core 2.0使用MsSql/MySql实现DB First和Code First ASP.NET Core部署到Windows IIS QRCode.js:使用 JavaScript 生成
- asp.net core 使用EntityFrameWork遇到的问题
- ASP.NET Core 开发-Logging 使用NLog 写日志文件
- ASP.NET Core 开发-Logging 使用NLog 写日志文件
- 使用NLog给Asp.Net Core做请求监控的方法
- ASP.NET Core2.0 使用VSCode 版本1.13.1工具 开发控制台运行出现中文乱码问题及解决方法
- linux系统下基于mono部署asp.net,使用ef6与mysql出现的问题【索引】
- ASP.NET Core 2.0 使用NLog实现日志记录
- ASP.NET Core使用NLog记录日志到Microsoft Sql Server