.NET4.7使用NLog記錄日志到數(shù)據(jù)庫表
1. 首先安裝必要的NuGet包
在項(xiàng)目中安裝以下NuGet包:
- NLog
- NLog.Config (可選,用于自動(dòng)生成配置文件)
相應(yīng)的數(shù)據(jù)庫提供程序(如System.Data.SqlClient for SQL Server)
Install-Package NLog Install-Package NLog.Config Install-Package System.Data.SqlClient
2. 配置NLog.config文件
在項(xiàng)目中添加或修改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="Info" internalLogFile="c:\temp\nlog-internal.log"> <extensions> <add assembly="NLog" /> </extensions> <targets> <!-- 數(shù)據(jù)庫目標(biāo) --> <target name="database" xsi:type="Database" connectionString="YourConnectionStringHere" commandText="INSERT INTO LoginLogs(ID, LoginName, Message, CreateTime) VALUES(@ID, @LoginName, @Message, @CreateTime)"> <parameter name="@ID" layout="${guid}" /> <parameter name="@LoginName" layout="${event-properties:item=LoginName}" /> <parameter name="@Message" layout="${message}" /> <parameter name="@CreateTime" layout="${date:format=yyyy-MM-dd HH\:mm\:ss}" /> </target> </targets> <rules> <logger name="*" minlevel="Info" writeTo="database" /> </rules> </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" internalLogLevel="Info" internalLogFile="c:\temp\nlog-internal.log"> <extensions> <add assembly="NLog" /> </extensions> <targets async="true"> <!-- 啟用全局異步 --> <!-- 異步數(shù)據(jù)庫目標(biāo) --> <target name="asyncDatabase" xsi:type="AsyncWrapper" queueLimit="10000" overflowAction="Discard"> <target xsi:type="Database" connectionString="YourConnectionStringHere" commandText="INSERT INTO LoginLogs(ID, LoginName, Message, CreateTime) VALUES(@ID, @LoginName, @Message, @CreateTime)"> <parameter name="@ID" layout="${guid}" /> <parameter name="@LoginName" layout="${event-properties:item=LoginName}" /> <parameter name="@Message" layout="${message}" /> <parameter name="@CreateTime" layout="${date:format=yyyy-MM-dd HH\:mm\:ss}" /> </target> </target> </targets> <rules> <logger name="*" minlevel="Info" writeTo="asyncDatabase" /> </rules> </nlog>
3. 創(chuàng)建數(shù)據(jù)庫表
確保你的數(shù)據(jù)庫中有對(duì)應(yīng)的表結(jié)構(gòu):
CREATE TABLE LoginLogs ( ID UNIQUEIDENTIFIER PRIMARY KEY, LoginName NVARCHAR(100), Message NVARCHAR(MAX), CreateTime DATETIME )
4. 在代碼中使用NLog記錄登錄日志
using NLog; public class LoginService { private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); public void LogLoginAttempt(string loginName, string message, bool isSuccess) { var logEvent = new LogEventInfo { Level = isSuccess ? LogLevel.Info : LogLevel.Warn, Message = message }; logEvent.Properties["LoginName"] = loginName; Logger.Log(logEvent); } }
5. 使用示例
var loginService = new LoginService(); // 成功登錄 loginService.LogLoginAttempt("john.doe", "User logged in successfully", true); // 失敗登錄 loginService.LogLoginAttempt("john.doe", "Invalid password", false);
到此這篇關(guān)于.NET4.7使用NLog記錄日志到數(shù)據(jù)庫表的文章就介紹到這了,更多相關(guān).NET NLog記錄日志到數(shù)據(jù)庫表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
運(yùn)用.NetCore實(shí)例講解RabbitMQ死信隊(duì)列,延時(shí)隊(duì)列
這篇文章主要運(yùn)用.NetCore實(shí)例講解RabbitMQ死信隊(duì)列,延時(shí)隊(duì)列,,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2021-09-09WebService出現(xiàn)"因 URL 意外地以 結(jié)束,請求格式無法識(shí)別"的解決方法
因 URL 意外地以“/GetReceivedInvoices”結(jié)束,請求格式無法識(shí)別。2009-01-01如何在ASP.NET Core類庫項(xiàng)目中讀取配置文件詳解
這篇文章主要給大家介紹了關(guān)于如何在ASP.NET Core類庫項(xiàng)目中讀取配置文件的相關(guān)資料,這是朋友提的一個(gè)問題,文中通過示例代碼介紹的非常詳解,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起看看吧。2017-10-10Lucene.Net實(shí)現(xiàn)搜索結(jié)果分類統(tǒng)計(jì)功能(中小型網(wǎng)站)
這篇文章主要介紹了Lucene.Net實(shí)現(xiàn)搜索結(jié)果分類統(tǒng)計(jì)功能(中小型網(wǎng)站),這種實(shí)現(xiàn)方式比較適合中小型網(wǎng)站,在數(shù)據(jù)量和搜索量不大的情況下可用。本文給大家介紹非常詳細(xì),需要的朋友可以參考下2017-03-03ASP.NET數(shù)據(jù)綁定的記憶碎片實(shí)現(xiàn)代碼
ASP.NET數(shù)據(jù)綁定的記憶碎片實(shí)現(xiàn)代碼,需要的朋友可以參考下2012-10-10.NET C#創(chuàng)建WebService服務(wù)簡單實(shí)例
這篇文章主要為大家詳細(xì)介紹了.NET C# 創(chuàng)建WebService服務(wù)簡單實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05