日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

NLog在asp.net core中的应用

發布時間:2023/12/20 asp.net 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NLog在asp.net core中的应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Asp.net core中,自帶的Log是在當selfhost運行時,在控制臺中輸出,不便于查閱,如果用一個log架框,把日志持久化,便于查詢.

NLog是一個免費的日志記錄框架,專門為.net平臺下的框架提供日志功能,本文主要說明asp.net core下怎么使用NLog。

首先用Nuget安裝NLog.Extensions.Logging和NLog.Web.AspNetCore兩個類庫。

修改project.json,在publishOptions中添加”nlog.config節點”

"publishOptions":?{

??"include":?[

????"wwwroot",

????"**/*.cshtml",

????"appsettings.json",

????"web.config",

????"nlog.config"

??]

}

在StartUp.cs中添加

public?void?ConfigureServices(IServiceCollection?services){//?Add?framework?services.services.AddMvc();//為NLog.web注入HttpContextAccessorservices.AddSingleton<IHttpContextAccessor,?HttpContextAccessor>(); …… } public?void?Configure(IApplicationBuilder?app,?IHostingEnvironment?env,?ILoggerFactory?loggerFactory){//添加NLog到.net?core框架中loggerFactory.AddNLog();//添加NLog的中間件app.AddNLogWeb();//指定NLog的配置文件env.ConfigureNLog("nlog.config"); …… }


HomeController.cs中是自定義日志

static?Logger?Logger?=?LogManager.GetCurrentClassLogger(); public?IActionResult?Index() {Logger.Info("普通信息日志");Logger.Debug("調試日志");Logger.Error("錯誤日志");Logger.Fatal("異常日志");Logger.Warn("警告日志");Logger.Trace("跟蹤日志");Logger.Log(NLog.LogLevel.Warn,?"Log日志");try{int?i?=?0;var?a?=?10?/?i;}catch?(Exception?exc){//異常日志Logger.Fatal(exc,?exc.Message);}return?View(); }


NLog.config,有兩種日志,記錄在C:\temp下,一種是全部日志,一種是自己通過NLog函數記錄的日志。如果日志庫異常,會產生在c:\temp\internal-nlog.txt下,

<?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"internalLogLevel="Warn"internalLogFile="c:\temp\internal-nlog.txt"><!--??ASP.NET?Core?使用?--><extensions><add?assembly="NLog.Web.AspNetCore"/></extensions>?<targets><!--?全部日志文件?--><target?xsi:type="File"?name="allfile"?fileName="c:\temp\nlog-all-${shortdate}.log"layout="${longdate}|${event-properties:item=EventId.Id}|${logger}|${uppercase:${level}}|${message}?${exception}"?/><!--?自定義記錄的日志文件?--><target?xsi:type="File"?name="ownFile-web"?fileName="c:\temp\nlog-own-${shortdate}.log"layout="${longdate}|${event-properties:item=EventId.Id}|${logger}|${uppercase:${level}}|??${message}?${exception}|url:?${aspnet-request-url}|action:?${aspnet-mvc-action}"?/><target?xsi:type="Null"?name="blackhole"?/></targets><rules><!--所括asp.net?core下的全部日志--><logger?name="*"?minlevel="Trace"?writeTo="allfile"?/><!--僅自定義記錄的日志文件--><logger?name="Microsoft.*"?minlevel="Trace"?writeTo="blackhole"?final="true"?/><logger?name="*"?minlevel="Trace"?writeTo="ownFile-web"?/></rules> </nlog>


Layout中$后的數據就是要寫日志的內容,關于這些數據可參考https://github.com/nlog/nlog/wiki/Layout-Renderers,可以根據自己的需要,選擇要保存的日志數據,如下圖是web中的日志數據:

?

如果想把日志保存到數據庫中,可以把NLog.config修改如下:

<?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"internalLogLevel="Warn"internalLogFile="c:\temp\internal-nlog.txt"><!--?ASP.NET?Core?使用??--><extensions><add?assembly="NLog.Web.AspNetCore"/></extensions><!--?注意配置連接字符串?--><targets><target?name="database"?xsi:type="Database"?connectionString="server=.;database=nglogdb;uid=SQL用戶名;pwd=SQL密碼;"><commandText>INSERT?INTO?[dbo].[NLog]?([MachineName],[SiteName],[Logged],[Level],[UserName],[Message],[Logger],[Properties],[Host],[Controller],[Action],[Url],[CallSite],[Exception])?VALUES?(@machineName,@siteName,@logged,@level,@userName,@message,@logger,@properties,@host,@controller,@action,@url,@callSite,@exception);</commandText><parameter?name="@machineName"????layout="${machinename}"?/><parameter?name="@siteName"???????layout="${iis-site-name}"?/><parameter?name="@logged"?????????layout="${date}"?/><parameter?name="@level"??????????layout="${level}"?/><parameter?name="@username"???????layout="${aspnet-user-identity}"?/><parameter?name="@message"????????layout="${message}"?/><parameter?name="@logger"?????????layout="${logger}"?/><parameter?name="@properties"?????layout="${all-event-properties:separator=|}"?/><parameter?name="@host"???????????layout="${aspnet-request-host}"?/><parameter?name="@controller"?????layout="${aspnet-MVC-Controller}"?/><parameter?name="@action"?????????layout="${aspnet-MVC-Action}"?/><parameter?name="@url"????????????layout="${aspnet-request-url}"?/><parameter?name="@callSite"???????layout="${callsite}"?/><parameter?name="@exception"??????layout="${exception:tostring}"?/></target></targets><rules><logger?name="*"?minlevel="Trace"?writeTo="database"/></rules> </nlog>


數據庫數據如下:

轉載于:https://blog.51cto.com/axzxs/1894584

總結

以上是生活随笔為你收集整理的NLog在asp.net core中的应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。