1、通过Nuget安装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.config,正式运行 throwExceptions="false"

 <?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"
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
autoReload="true"
throwExceptions="true"
internalLogLevel="Info" internalLogFile="d:\work\log1.txt">
<targets async="true">
<target name="database" xsi:type="Database" keepConnection="false" useTransactions="true"
dbProvider="System.Data.OracleClient.OracleConnection,System.Data.OracleClient, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
connectionString="Data Source=ORCL;User Id=oracle;Password=oracle;Integrated Security=no;"
commandText="insert into TBL_LOG(APPNAME,MODULENAME,PROCNAME,OPERATIONTYPE,LOGGER,LOGMESSAGE,IP,LONGDATE,USERNAME,LOGLEVEL) values(:APPNAME,:MODULENAME,:PROCNAME,:OPERATIONTYPE,:LOGGER,:LOGMESSAGE,:IP,:TIME_STAMP,:USERNAME,:LOGLEVEL)">
<parameter name="APPNAME" layout="${event-context:item=APPNAME}" />
<parameter name="MODULENAME" layout="${event-context:item=MODULENAME}" />
<parameter name="PROCNAME" layout="${event-context:item=PROCNAME}" />
<parameter name="OPERATIONTYPE" layout="${event-context:item=OPERATIONTYPE}" />
<parameter name="LOGGER" layout="${event-context:item=LOGGER}" />
<parameter name="LOGMESSAGE" layout="${event-context:item=LOGMESSAGE}" />
<parameter name="IP" layout="${event-context:item=IP}" />
<parameter name="TIME_STAMP" layout="${longdate}" />
<parameter name="USERNAME" layout="${event-context:item=USERNAME}" />
<parameter name="LOGLEVEL" layout="${level:uppercase=true}" />
</target>
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="database" />
</rules>
</nlog>

4、简单封装

     public class Logger
{
#region 初始化
/// <summary>
/// 数据错误无法获取用户时使用
/// </summary>
public static string DefaultUser = "system";
/// <summary>
/// 默认地址
/// </summary>
public static string DefaultIP = "127.0.0.1";
NLog.Logger _logger;
private 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());
}
#endregion
#region Process日志写入
/// <summary>
/// 日志写入
/// </summary>
/// <param name="APPNAME">菜单大类</param>
/// <param name="MODULENAME">二级菜单</param>
/// <param name="PROCNAME">本级菜单</param>
/// <param name="OPERATIONTYPE">操作类型</param>
/// <param name="LOGMESSAGE">详细日志</param>
/// <param name="IP">ip地址</param>
/// <param name="USERNAME">用户名</param>
/// <param name="LOGGER">LOGGER</param>
public void Process(string APPNAME, string MODULENAME, string PROCNAME, OperationType OPERATIONTYPE, string LOGMESSAGE, string IP, string USERNAME, string LOGGER)
{
if (LOGMESSAGE.Length > )
{
LOGMESSAGE = LOGMESSAGE.Substring(, );
}
LogEventInfo 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);
}
/// <summary>
/// 日志写入,自己传日志类别
/// </summary>
/// <param name="APPNAME">菜单大类</param>
/// <param name="MODULENAME">二级菜单</param>
/// <param name="PROCNAME">本级菜单)</param>
/// <param name="OPERATIONTYPE">操作类型</param>
/// <param name="LOGMESSAGE">详细日志</param>
/// <param name="IP">ip地址</param>
/// <param name="USERNAME">用户名</param>
/// <param name="LOGGER">LOGGER</param>
/// <param name="Level">日志级别</param>
public void Process(string APPNAME, string MODULENAME, string PROCNAME, OperationType OPERATIONTYPE, string LOGMESSAGE, string IP, string USERNAME, string LOGGER, LogLevel Level)
{
if (LOGMESSAGE.Length > )
{
LOGMESSAGE = LOGMESSAGE.Substring(, );
}
LogEventInfo 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);
}
#endregion
}
/// <summary>
/// 操作类型枚举
/// </summary>
public enum OperationType
{
/// <summary>
/// 保存或添加
/// </summary>
[System.ComponentModel.Description("保存或添加")]
ADD,
/// <summary>
/// 更新
/// </summary>
[System.ComponentModel.Description("更新")]
UPDATE,
/// <summary>
/// 审核
/// </summary>
[System.ComponentModel.Description("审核")]
AUDIT,
/// <summary>
/// 删除
/// </summary>
[System.ComponentModel.Description("删除")]
DELETE,
/// <summary>
/// 读取/查询
/// </summary>
[System.ComponentModel.Description("读取/查询")]
RETRIEVE,
/// <summary>
/// 登录
/// </summary>
[System.ComponentModel.Description("登录")]
LOGIN,
/// <summary>
/// 查看
/// </summary>
[System.ComponentModel.Description("查看")]
LOOK
}

5、asp.net中的调用列子:

             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 自定义字段 写入 oracle的更多相关文章

  1. [转]NLog 自定义字段 写入 oracle

    本文转自:http://www.cnblogs.com/skyapplezhao/p/5690695.html 1.通过Nuget安装NLog 下载,简单入门 请参照 我刚才转的几篇文章,下面我直接贴 ...

  2. NLog自定义字段写入数据库表,示例

    //自定义字段写入NLog日志 private void saveNLog(InvokeLogModel model) { LogEventInfo ei = new LogEventInfo(); ...

  3. Log4net 自定义字段 写入Oracle 使用ODP.NET Managed驱动

    一.环境说明: 开发工具:vs2010   ,数据库:oracle 11g ,版本:log4net的目前最新版本1.2.13.0    :  Oracle.ManagedDataAccess.dll ...

  4. log4net自定义字段写入SqlServer数据库 ASP.net

    首先申明,本示例经过本作者亲自试验通过,可以运行 第一步 编写log4net配置文件 此处为Log.xml,该文件放在与Web.config平级的位置 <?xml version="1 ...

  5. NetCore2.2使用Nlog自定义日志写入路径配置方式

    在一些特定场景的业务需求下,日志需要写入到不同的路径下提供日志分析.第一种:默认Nlog可以通过日志级别来区分路径,——优点是不需要额外配置,开箱即用——缺点是不够灵活,如果超过级别数量,则不满足需求 ...

  6. Java自定义表单、自定义字段

    最近想实现用户自定义数据库中的字段,我想大部分人第一想到的就是EAV(Entity-Attribute-Value),这种方式对于写一个小的毕业设计应该还可以使用,当然也有很多CMS系统采用这种方式, ...

  7. Log4net 自定义字段到数据库(二)

    这种方法比第一种方法麻烦些 Log4Net.config <?xml version="1.0" encoding="utf-8" ?> <c ...

  8. Hibernate写入Oracle Date类型处理

    Hibernate写入Oracle数据库时,数据库设计字段为Date类型时,只能保存年月日,不能保存时分秒,如果要保存时分秒,需修改Hibernate.cfg.xml文件 <property n ...

  9. Log4net 使用之 自定义字段

    Log4net 是.Net下一个非常优秀的开源日志记录组件.Log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介. 由于业务需要,计划为日志增加2个字段,除了 ...

随机推荐

  1. VC文件夹大小(转)

    使用自带的类 CFileFind finder.FindNextFile();  遍历所有文件,按照修改时间顺序遍历 //参数输入 文件夹路径 //返回文件夹大小 byte DWORD GetDirS ...

  2. C#基础总结之三循环控制-for-数组-乘法表-arraylist

    #region 第三天 作业 乘法表 ////正三角 //for (int i = 1; i < 10; i++) //{ // for (int j = 1; j <= i; j++) ...

  3. Java知多少(110)数据库之插入记录

    插入数据表记录有3种方案 一.使用Statement对象 实现插入数据表记录的SQL语句的语法是: insert into 表名(字段名1,字段名2,……)value (字段值1,字段值2,……) 例 ...

  4. codeforces B. Design Tutorial: Learn from Life

    题意:有一个电梯,每一个人都想乘电梯到达自己想要到达的楼层!从a层到b层的时间是|a-b|, 乘客上下电梯的时间忽略不计!问最少需要多少的时间....     这是一道神题啊,自己的思路不知不觉的就按 ...

  5. Git 分支合并

    理解核心 Git最初只有一个分支,所有后续分支都是直接或间接的从这个分支切出来的. 在任意两个分支上,向前追溯提交记录,都能找到一个最近的提交同时属于这两个分支,这个提交就是两个分支的分叉节点 分支合 ...

  6. LoRaWAN协议(四)--入网方式概述

    前言 在LoRaWAN中,node最终和服务器能够正常数据交互,需要先入网,入网的本质,也就是获得一些通信相关的参数,有以下几个: NwkSKey AppSKey DevAddr DevEui 其中 ...

  7. Hadoop入门进阶课程13--Chukwa介绍与安装部署

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan  ...

  8. iOS-沙盒路径总结、文件管理NSFileManager总结

    // //  ViewController.m //  沙盒操作 // //  Created by mncong on 15/11/26. //  Copyright © 2015年 mancong ...

  9. Mysql学习笔记(九)索引查询优化

    PS:上网再次看了一下数据库关于索引的一些细节...感觉自己学的东西有点少...又再次的啃了啃索引.... 学习内容: 索引查询优化... 上一章说道的索引还不是特别的详细,再补充一些具体的细节... ...

  10. shell join 参数详细说明

    join类似db里面的join方法,同样有left join right join inner join等 指定参数-a 可以指定join的方式. -a1表示显示第一个文件中不匹配的行,即为left ...