前几天分享的 "[Net Core 平台灵活简单的日志记录框架 NLog+Mysql 组合初体验][http://www.cnblogs.com/yilezhu/p/9416439.html]" 反响还行. 有网友就说有了 NLog+MySql 的组合, 那如果我是用 SqlServer 怎么使用 NLog 呢? 于是乎, 这篇 "Net Core 平台灵活简单的日志记录框架 NLog+SqlServer 初体验" 就诞生了! 关于记录到文本文件里面的方法上篇文章也已经说明了. 而且 NLog+SqlServer 的组合跟 NLog+MySql 的组合使用方法很类似知识配置不一样. 因此这篇文章会很精简, 直接讲使用了!
本文地址: https://www.cnblogs.com/yilezhu/p/9451282.html
NLog+SqlServer 的组合在 Net Core 中怎么用啊?
关于怎么安装, 使用, 请看我的上篇文章 "[Net Core 平台灵活简单的日志记录框架 NLog+Mysql 组合初体验][http://www.cnblogs.com/yilezhu/p/9416439.html]". 用法一样, 只是如果你需要把 MySql 的程序集改成 "System.Data.SqlClient". 依赖项截图如下所示:
打开 Nlog.config 文件, 把 NLog 的配置修改成如下所示. 我写的只是参考, 大家可以自由发挥:
- <?xml version="1.0" encoding="utf-8" ?>
- <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- autoReload="true"
- throwExceptions="true"
- internalLogLevel="warn"
- internalLogFile="logfiles/internal-nlog.txt">
- <targets>
- <target xsi:type="Null" name="blackhole" />
- <target name="database" xsi:type="Database"
- dbProvider="System.Data.SqlClient"
- connectionString="Data Source=127.0.0.1;Initial Catalog=MiddleData;User ID=lzhu;Password=bl123456;"
- >
- <!--
- create table NLog (
- Id int identity,
- Application nvarchar(50) null,
- Logged datetime null,
- Level nvarchar(50) null,
- Message nvarchar(512) null,
- Logger nvarchar(250) null,
- Callsite nvarchar(512) null,
- Exception nvarchar(512) null,
- constraint PK_NLOG primary key (Id)
- )
- -->
- <commandText>
- insert into nlog (
- Application, Logged, Level, Message,
- Logger, CallSite, Exception
- ) values (
- @Application, @Logged, @Level, @Message,
- @Logger, @Callsite, @Exception
- );
- </commandText>
- <parameter name="@application" layout="NLogTestDemo" />
- <parameter name="@logged" layout="${date}" />
- <parameter name="@level" layout="${level}" />
- <parameter name="@message" layout="${message}" />
- <parameter name="@logger" layout="${logger}" />
- <parameter name="@callSite" layout="${callsite:filename=true}" />
- <parameter name="@exception" layout="${exception:tostring}" />
- </target>
- </targets>
- <rules>
- <!--Skip Microsoft logs and so log only own logs-->
- <logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />
- <logger name="NLogTestDemo.*" minlevel="Info" writeTo="database" />
- </rules>
- </nlog>
上面的代码中我是以写入 SqlServer 为例进行的 NLog 配置. 下面就可以进行简单地使用了. 首先需要在. 首先在 Startup 中的 Configure 中来加入中间件:
- public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
- {
- if (env.IsDevelopment())
- {
- app.UseDeveloperExceptionPage();
- }
- // 使用 NLog 作为日志记录工具
- loggerFactory.AddNLog();
- // 引入 Nlog 配置文件
- env.ConfigureNLog("Nlog.config");
- //app.AddNLogweb();
- app.UseMvc();
- }
在 Program 中进行如下配置:
- public class Program
- {
- public static void Main(string[] args)
- {
- CreateWebHostBuilder(args).Build().Run();
- }
- public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
- WebHost.CreateDefaultBuilder(args)
- .UseNLog()
- .UseStartup<Startup>();
- }
下面就可以在代码中愉快的玩耍了,
- private readonly Logger nlog = LogManager.GetCurrentClassLogger(); // 获得日志实;
- // GET api/values
- [HttpGet]
- public ActionResult<string> Get()
- {
- nlog.Log(NLog.LogLevel.Debug, $"yilezhu 测试 Debug 日志");
- nlog.Log(NLog.LogLevel.Info, $"yilezhu 测试 Info 日志");
- try
- {
- throw new Exception($"yilezhu 故意抛出的异常");
- }
- catch (Exception ex)
- {
- nlog.Log(NLog.LogLevel.Error, ex, $"yilezhu 异常的额外信息");
- }
- return "yilezhu 的返回信息";
- }
下面运行起来项目, 然到数据库里面就可以看到记录的日志信息如下所示:
这里大家可能会问, 为什么没有 Debug 信息输出呢, 这是因为我们上面 NLog 配置设置的记录日志的最低级别为 Info. 所以比 Info 级别小的 Debug 信息不会记录. 如果想记录的话就把这个级别设置成 Debug 或者比 Debug 小的 Trace 就可以记录了. 如下图所示:
源码下载
https://download.csdn.net/download/qin_yu_2010/10594141
总结
本文开头讲述了上篇关于 "[Net Core 平台灵活简单的日志记录框架 NLog+Mysql 组合初体验][http://www.cnblogs.com/yilezhu/p/9416439.html]" 说起, 然后引出轻量级简单易用的 NLog+SqlServer 组合, 并通过一个简单地 api 项目讲述了 NLog+SqlServer 组合如何在 Net Core 中使用. 以及 SqlServer 的建表语句. 实例代码都跟上篇文章很相似. 希望能对大家有所参考!
来源: https://www.cnblogs.com/yilezhu/p/9451282.html