博客
关于我
NLog 自定义字段 写入 oracle
阅读量:795 次
发布时间: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日志分析系统---ElasticStack(ELK)工作笔记001
查看>>
Nginx映射本地json文件,配置解决浏览器跨域问题,提供前端get请求模拟数据
查看>>
nginx最最最详细教程来了
查看>>
Nginx服务器---正向代理
查看>>
Nginx服务器上安装SSL证书
查看>>
Nginx服务器基本配置
查看>>
Nginx服务器的安装
查看>>
Nginx标准配置文件(包括反向代理、大文件上传、Https证书配置、文件预览等)
查看>>
Nginx模块 ngx_http_limit_conn_module 限制连接数
查看>>
Nginx模块 ngx_http_limit_req_module 限制请求速率
查看>>
nginx添加模块与https支持
查看>>
nginx状态监控
查看>>
Nginx用户认证
查看>>
Nginx的location匹配规则的关键问题详解
查看>>
Nginx的Rewrite正则表达式,匹配非某单词
查看>>
Nginx的使用总结(一)
查看>>
Nginx的使用总结(三)
查看>>
Nginx的使用总结(二)
查看>>
Nginx的使用总结(四)
查看>>
Nginx的可视化神器nginx-gui的下载配置和使用
查看>>