博客
关于我
NLog 自定义字段 写入 oracle
阅读量:792 次
发布时间:2023-02-16

本文共 3338 字,大约阅读时间需要 11 分钟。

使用NLog实现日志记录与数据库存储

1. 安装NLog

通过Nuget安装NLog Nuget包,是进行日志记录的首要步骤。在Visual Studio中,可以通过右键项目,选择"管理包",搜索并安装NLog。

2. 数据库表设计

创建用于存储日志数据的数据库表,以下是建表语句:

create table TBL_LOG(  id            VARCHAR2(60)  not null,  appname       VARCHAR2(20),  modulename    VARCHAR2(30),  procname      VARCHAR2(30),  operationtype VARCHAR2(20),  logger        VARCHAR2(500),  logmessage    VARCHAR2(3000) not null,  ip            VARCHAR2(32),  longdate      VARCHAR2(36),  username      VARCHAR2(36),  createdate    DATE default sysdate,  loglevel      VARCHAR2(12))

3. NLog配置

在app.config中添加NLog配置,确保日志可以正确写入数据库。以下是常见配置示例:

4. 封装日志处理

创建一个简单的Logger类,用于方便调用日志记录功能。以下是类代码:

public class Logger{    private NLog.Logger _logger;    public Logger(NLog.Logger logger)    {        _logger = logger;    }    public Logger(string name) : this(LogManager.GetLogger(name)) { }    public static Logger Default { get; private set; }    static Logger()    {        Default = new Logger(LogManager.GetCurrentClassLogger());    }    public void Process(string APPNAME, string MODULENAME, string PROCNAME, OperationType OPERATIONTYPE, string LOGMESSAGE, string IP, string USERNAME, string LOGGER)    {        if (LOGMESSAGE.Length > 3000)        {            LOGMESSAGE = LOGMESSAGE.Substring(0, 3000);        }        var lei = new LogEventInfo();        lei.Properties["ID"] = Guid.NewGuid().ToString("D");        lei.Properties["APPNAME"] = APPNAME;        lei.Properties["MODULENAME"] = MODULENAME;        lei.Properties["PROCNAME"] = PROCNAME;        lei.Properties["OPERATIONTYPE"] = OPERATIONTYPE;        lei.Properties["LOGMESSAGE"] = LOGMESSAGE;        lei.Properties["IP"] = IP;        lei.Properties["USERNAME"] = USERNAME;        lei.Properties["LOGGER"] = LOGGER;        lei.Level = LogLevel.Info;        _logger.Log(lei);    }    public void Process(string APPNAME, string MODULENAME, string PROCNAME, OperationType OPERATIONTYPE, string LOGMESSAGE, string IP, string USERNAME, string LOGGER, LogLevel Level)    {        if (LOGMESSAGE.Length > 3000)        {            LOGMESSAGE = LOGMESSAGE.Substring(0, 3000);        }        var lei = new LogEventInfo();        lei.Properties["ID"] = Guid.NewGuid().ToString("D");        lei.Properties["APPNAME"] = APPNAME;        lei.Properties["MODULENAME"] = MODULENAME;        lei.Properties["PROCNAME"] = PROCNAME;        lei.Properties["OPERATIONTYPE"] = OPERATIONTYPE;        lei.Properties["LOGMESSAGE"] = LOGMESSAGE;        lei.Properties["IP"] = IP;        lei.Properties["USERNAME"] = USERNAME;        lei.Properties["LOGGER"] = LOGGER;        lei.Level = Level;        _logger.Log(lei);    }}public enum OperationType{    ADD,    UPDATE,    AUDIT,    DELETE,    RETRIEVE,    LOGIN,    LOOK}

5. 在ASP.NET中使用示例

以下是一个在ASP.NET中使用Logger类的示例:

// 示例一Logger.Default.Process("系统管理", "权限管理", "用户管理", OperationType.RETRIEVE, "测试写入", Logger.DefaultIP, Logger.DefaultUser, this.GetType().ToString(), NLog.LogLevel.Error);// 示例二Logger.Default.Process("系统管理", "权限管理", "用户管理", OperationType.RETRIEVE, "测试写入", Logger.DefaultIP, Logger.DefaultUser, this.GetType().ToString());

这篇文章详细介绍了使用NLog进行日志记录与数据库存储的完整流程,包括安装、配置、表设计和实际应用开发。通过这些步骤,你可以轻松实现应用程序的日志管理与分析需求。

转载地址:http://ycjfk.baihongyu.com/

你可能感兴趣的文章
Nacos集群搭建
查看>>
nacos集群搭建
查看>>
Navicat for MySQL 查看BLOB字段内容
查看>>
Neo4j电影关系图Cypher
查看>>
Neo4j的安装与使用
查看>>
Neo4j(2):环境搭建
查看>>
Neo私链
查看>>
nessus快速安装使用指南(非常详细)零基础入门到精通,收藏这一篇就够了
查看>>
Nessus漏洞扫描教程之配置Nessus
查看>>
Nest.js 6.0.0 正式版发布,基于 TypeScript 的 Node.js 框架
查看>>
nestJS学习
查看>>
NetApp凭借领先的混合云数据与服务把握数字化转型机遇
查看>>
NetBeans IDE8.0需要JDK1.7及以上版本
查看>>
netbeans生成的maven工程没有web.xml文件 如何新建
查看>>
netcat的端口转发功能的实现
查看>>
netfilter应用场景
查看>>
netlink2.6.32内核实现源码
查看>>
Netpas:不一样的SD-WAN+ 保障网络通讯品质
查看>>
NetScaler的常用配置
查看>>
netsh advfirewall
查看>>