博客
关于我
NLog 自定义字段 写入 oracle
阅读量:793 次
发布时间: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/

你可能感兴趣的文章
Nginx 反向代理 MinIO 及 ruoyi-vue-pro 配置 MinIO 详解
查看>>
nginx 反向代理 转发请求时,有时好有时没反应,产生原因及解决
查看>>
Nginx 反向代理+负载均衡
查看>>
Nginx 反向代理解决跨域问题
查看>>
Nginx 反向代理配置去除前缀
查看>>
nginx 后端获取真实ip
查看>>
Nginx 多端口配置和访问异常问题的排查与优化
查看>>
Nginx 如何代理转发传递真实 ip 地址?
查看>>
Nginx 学习总结(16)—— 动静分离、压缩、缓存、黑白名单、性能等内容温习
查看>>
Nginx 学习总结(17)—— 8 个免费开源 Nginx 管理系统,轻松管理 Nginx 站点配置
查看>>
Nginx 学习(一):Nginx 下载和启动
查看>>
nginx 常用指令配置总结
查看>>
Nginx 常用配置清单
查看>>
nginx 常用配置记录
查看>>
nginx 开启ssl模块 [emerg] the “ssl“ parameter requires ngx_http_ssl_module in /usr/local/nginx
查看>>
Nginx 我们必须知道的那些事
查看>>
Nginx 源码完全注释(11)ngx_spinlock
查看>>
Nginx 的 proxy_pass 使用简介
查看>>
Nginx 的 SSL 模块安装
查看>>
Nginx 的优化思路,并解析网站防盗链
查看>>