.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ù)庫中有對應(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)文章
C#實(shí)現(xiàn)Web文件上傳的兩種方法實(shí)例代碼
在Web編程中,我們常需要把一些本地文件上傳到Web服務(wù)器上,上傳后,用戶可以通過瀏覽器方便地瀏覽這些文件,應(yīng)用十分廣泛。2013-07-07
asp.net 中靜態(tài)方法和動(dòng)態(tài)方法調(diào)用的區(qū)別實(shí)例分析
動(dòng)態(tài)方法,在使用時(shí)需要先創(chuàng)建實(shí)例,才能調(diào)用實(shí)例方法,而靜態(tài)方法則不需要,直接使用即可。2013-06-06
asp.net(c#)文件下載實(shí)現(xiàn)代碼
本文通過一個(gè)實(shí)例向大家介紹用C#進(jìn)行Internet通訊編程的一些基本知識(shí)。我們知道.Net類包含了請求/響應(yīng)層、應(yīng)用協(xié)議層、傳輸層等層次。2009-11-11
.NET5修改配置不重啟自動(dòng)生效的實(shí)現(xiàn)
.NET Core,.NET5默認(rèn)配置都是只加載一次,修改配置時(shí)都需要重啟才能生效,如何能修改即時(shí)生效呢,本文就來介紹一下2021-09-09
.NET程序啟動(dòng)就報(bào)錯(cuò)如何截獲初期化時(shí)的問題json(最新推薦)
這篇文章主要介紹了.NET程序啟動(dòng)就報(bào)錯(cuò),如何截獲初期化時(shí)的問題json,本文通過小案例給大家詳細(xì)講解,感興趣的朋友一起看看吧2025-05-05
ASP.NET?Core通用主機(jī)的系統(tǒng)配置
這篇文章介紹了ASP.NET?Core通用主機(jī)系統(tǒng)配置的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07
在.NET Core類庫中使用EF Core遷移數(shù)據(jù)庫到SQL Server的方法
下面小編就為大家分享一篇在.NET Core類庫中使用EF Core遷移數(shù)據(jù)庫到SQL Server的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12

