当前位置: 首页 > news >正文

.NET 4.7中使用NLog记录日志到数据库表

1. 首先安装必要的NuGet包

在项目中安装以下NuGet包:

  • NLog

  • NLog.Config (可选,用于自动生成配置文件)

  • 相应的数据库提供程序(如System.Data.SqlClient for SQL Server)

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

2. 配置NLog.config文件

在项目中添加或修改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><!-- 数据库目标 --><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"> <!-- 启用全局异步 --><!-- 异步数据库目标 --><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. 创建数据库表

确保你的数据库中有对应的表结构:

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);

http://www.lryc.cn/news/572936.html

相关文章:

  • 上海人工智能实验室明珠湖会议首开,解答AI前沿疑问,推进科学智能
  • python自助棋牌室管理系统
  • AWS EC2使用SSM会话管理器连接
  • Rust 项目文档生成之旅:cargo doc
  • 伸缩线充电宝推荐丨倍思灵动充45W突破移动界限!
  • GDI绘制
  • 如何轻松地将音乐从 iPhone 传输到 Mac?
  • 合并两个有序链表C++
  • 深入理解XGBoost(何龙 著)学习笔记(五)
  • 网络编程简介与Netty实战:从入门到高性能Echo服务器
  • 6、ZYNQ PL UART串口(一)
  • 【JS-4.1-DOM获取元素操作】深入理解DOM操作:高效获取页面元素的方法与实践
  • WebGL图形学总结(二)
  • Python开发中虚拟环境的意义
  • 零基础入门PCB设计 一实践项目篇 第四章(STM32开发板PCB设计)
  • MAC环境安装Appium+JAVA
  • Supervisor进程管理
  • 数据结构-顺序表-求基数乘积
  • 阿里云申请ssl证书,同时需要绑定域名,下载nginx压缩包,nginx添加证书路径即可
  • 云徙科技 OMS:让订单管理变得轻松又高效
  • 联邦学习时间开销优化:现状、挑战与研究进展
  • C#的Dynamic、Object、Var
  • 什么是Vue.js
  • Linux -- 线程、锁
  • 大模型Text2SQL之在CentOS上使用yum安装与使用MySQL
  • LeetCode 680.验证回文串 II
  • 大模型在肺癌预测及个性化诊疗方案中的应用研究
  • 数据结构-顺序表-数值统计
  • 如何自建服务器并开启公网IP:本地内网网址让外网访问详细教学
  • Nginx常见功能