博客
关于我
NLog 自定义字段 写入 oracle
阅读量:796 次
发布时间: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配置如何一键生成
查看>>
Nginx配置实例-动静分离实例:搭建静态资源服务器
查看>>
Nginx配置实例-反向代理实例:根据访问的路径跳转到不同端口的服务中
查看>>
Nginx配置实例-负载均衡实例:平均访问多台服务器
查看>>
Nginx配置文件nginx.conf中文详解(总结)
查看>>
Nginx配置自带的stub状态实现活动监控指标
查看>>
nginx配置详解、端口重定向和504
查看>>
Nginx配置负载均衡到后台网关集群
查看>>
Nginx配置限流,技能拉满!
查看>>
Nginx面试三连问:Nginx如何工作?负载均衡策略有哪些?如何限流?
查看>>
Nginx:NginxConfig可视化配置工具安装
查看>>
ngModelController
查看>>
ngrok | 内网穿透,支持 HTTPS、国内访问、静态域名
查看>>
ngrok内网穿透可以实现资源共享吗?快解析更加简洁
查看>>
NHibernate学习[1]
查看>>
NHibernate异常:No persister for的解决办法
查看>>
NIFI1.21.0_java.net.SocketException:_Too many open files 打开的文件太多_实际操作---大数据之Nifi工作笔记0051
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_更新时如果目标表中不存在记录就改为插入数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0059
查看>>
NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
查看>>