首页 > 资讯中心 > 软件教程 > .NET4.7使用NLog记录日志到数据库表

.NET4.7使用NLog记录日志到数据库表

时间:2026-04-10 17:16:20 来源:互联网  阅读:

如何配置NLog将登录日志记录到数据库

将应用程序的登录日志持久化到数据库是常见的需求,有助于后续的审计与分析。使用NLog可以高效地完成此配置。以下是详细的实现步骤。

1. 安装必要的NuGet包

首先,需要在项目中安装必需的NuGet包。核心包是NLog,同时可以根据需要选择安装配置文件包和对应的数据库提供程序。

长期稳定更新的攒劲资源: >>>点此立即查看<<<

  • NLog:核心日志记录库。
  • NLog.Config (可选):用于自动生成配置文件。

以SQL Server为例,通过包管理器控制台执行以下安装命令:

Install-Package NLog
Install-Package NLog.Config
Install-Package System.Data.SqlClient

2. 配置NLog.config文件

接下来,在项目中添加或修改NLog.config文件,以定义将日志写入数据库的规则。核心是配置目标(Target)和规则(Rule)。

以下是一个基础配置示例,请将YourConnectionStringHere替换为实际的数据库连接字符串:

<?xml version="1.0" encoding="utf-8" ?>


  
    
  

  
    
    
      
      
      
      
    
  

  
    
  

若对应用性能有较高要求,可采用异步记录方式避免阻塞主线程。配置上主要启用异步包装器:

<?xml version="1.0" encoding="utf-8" ?>


  
    
  

   
    
    
      
        
        
        
        
      
    
  

  
    
  

3. 创建数据库表

需要在数据库中创建对应的表结构来存储日志数据。以下是一个建议的登录日志表结构:

CREATE TABLE LoginLogs (
    ID UNIQUEIDENTIFIER PRIMARY KEY,
    LoginName NVARCHAR(100),
    Message NVARCHAR(MAX),
    CreateTime DATETIME
)

4. 在代码中使用NLog记录登录日志

配置完成后,即可在业务代码中调用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
        };

        // 将业务数据(如登录名)添加到日志事件的属性中,以便在配置的layout里使用
        logEvent.Properties["LoginName"] = loginName;

        // 执行记录
        Logger.Log(logEvent);
    }
}

5. 使用示例

在实际的登录逻辑中,可以按如下方式调用日志记录服务:

var loginService = new LoginService();

// 成功登录时,记录一条INFO级别的日志
loginService.LogLoginAttempt("john.doe", "User logged in successfully", true);

// 登录失败时(如密码错误),记录一条WARN级别的日志
loginService.LogLoginAttempt("john.doe", "Invalid password", false);

通过以上步骤,登录成功与失败的事件将被清晰地记录到数据库中,便于后续的问题排查与安全审计。

最新更新

更多

蜀ICP备18022304号-13

如有侵犯您的权益,请发邮件给39879941@qq.com