Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验

Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验

前几天分享的"[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中怎么用啊?

  1. 关于怎么安装,使用,请看我的上篇文章“[Net Core平台灵活简单的日志记录框架NLog+Mysql组合初体验][http://www.cnblogs.com/yilezhu/p/9416439.html]”。用法一样,只是如果你需要把MySql的程序集改成“System.Data.SqlClient”.依赖项截图如下所示:
  1. 打开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>
  2. 上面的代码中我是以写入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(); }
  3. 在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>(); }
  4. 下面就可以在代码中愉快的玩耍了, 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的返回信息"; }
  5. 下面运行起来项目,然到数据库里面就可以看到记录的日志信息如下所示:

这里大家可能会问,为什么没有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的建表语句。实例代码都跟上篇文章很相似。希望能对大家有所参考!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏.NET开发者社区

(码友推荐)2018-07-30 .NET及相关开发资讯速递

4..NET Core微服务之基于App.Metrics+InfluxDB+Grafana实现统一性能监控

973
来自专栏進无尽的文章

NSRunLoop-iOS中隐藏的大杀器

NSRunLoop和CFRunLoopRef都代表着RunLoop对象.NSRunLoop是基于CFRunLoopRef的一层OC包装.

1001
来自专栏张善友的专栏

用schemaSpy制作数据库文档

Schemaspy是一款Java开发的数据库文档生成工具,是开源的。生成的数据库文档非常的漂亮,实用。最近探索了两天终于会使用这个工具了。我接触到这个工具是在开...

2315
来自专栏张善友的专栏

CentOS设置Mono环境变量

GitHub上有直接通过脚本一键安装Mono的脚本,具体参见 https://github.com/nathanb/iws-snippets/tree/mast...

1985
来自专栏大壮

RunLoop

1614
来自专栏JadePeng的技术博客

使用.NET Core+Docker 开发微服务

.NET Core发布很久了,因为近几年主要使用java,所以还没使用过.NET Core,今天正好有一个c#写的demo,需要做成服务,不想再转成java来实...

4312
来自专栏王磊的博客

visual studio 2010 如何修改assemblyInfo.cs默认值

这个应该是安装系统时的单位名称。 修改 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVe...

4067
来自专栏施炯的IoT开发专栏

EBox4300 Dev Start

EBox4300 Dev Start EBOx4300是ICOP Technology Inc.出的一款针对WinCE学习的jumpstart kit, 同时也...

2006
来自专栏LeeCen

Swift Perfect - iOS消息推送(APNs)之获取 APNs 授权码

本文的原生教程请点传送门 英文版:?Perfect-Notifications 英文? 中文版:?Perfect-Notifications 中文?

1781
来自专栏ASP.NETCore

Debugging into .NET Core源代码的两种方式

   .NET开源时间还不长,因为一直在做YOYOFx的关系,所似我常常有更深入的了解.NET Core和ASP.NET Core内容的需求,并且.NET Co...

2353

扫码关注云+社区

领取腾讯云代金券