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中怎么用啊?
-
关于怎么安装,使用,请看我的上篇文章“[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的建表语句。实例代码都跟上篇文章很相似。希望能对大家有所参考! (编辑:北几岛)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|