前幾天分享的"[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.htmlhtml
關於怎麼安裝,使用,請看個人上篇文章「[Net Core平臺靈活簡單的日誌記錄框架NLog+Mysql組合初體驗][http://www.cnblogs.com/yilezhu/p/9416439.html]」。用法同樣,只是若是你須要把MySql的程序集改爲「System.Data.SqlClient」.依賴項截圖以下所示:sql
打開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中來加入中間件:c#
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中進行以下配置:api
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>(); }
下面就能夠在代碼中愉快的玩耍了,app
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就能夠記錄了。以下圖所示:ide
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的建表語句。實例代碼都跟上篇文章很類似。但願能對你們有所參考!sqlserver