关于使用Log4Net将日志插入oracle数据库中
- <?xml version="1.0" encoding="utf-8" ?>
- <configuration>
- <configSections>
- <section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
- </configSections>
- <log4net>
- <root>
- <level value="ALL" />
- <appender-ref ref="rollingFile" />
- <appender-ref ref="ADONetAppender"/>
- </root>
- <logger name="Presin_log">
- <level value="ALL" />
- <appender-ref ref="PresinLoging" />
- </logger>
- <logger name="Oracle_DB">
- <level value="ALL" />
- <appender-ref ref="OracleDB" />
- </logger>
- <logger name="flowseting_log">
- <level value="ALL" />
- <appender-ref ref="flowsetingLoging" />
- </logger>
- <!--Presin日志-->
- <appender name="PresinLoging" type="log4net.Appender.RollingFileAppender,log4net" >
- <param name="File" value="Log\Presin\" />
- <param name="AppendToFile" value="true" />
- <param name="RollingStyle" value="Composite" />
- <param name="DatePattern" value="yyyy-MM-dd.'.txt'" />
- <param name="MaximumFileSize" value ="5MB"/>
- <param name="StaticLogFileName" value="false" />
- <layout type="log4net.Layout.PatternLayout,log4net">
- <conversionPattern value="%date %-5level %newline %logger - %message%newline %newline" />
- </layout>
- </appender>
- <appender name="OracleDB" type="log4net.Appender.AdoNetAppender,log4net" >
- <bufferSize value="20"/>
- <connectionType value="System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
- <connectionString value="Data Source=ORCl;User ID=sa;Password=sa;" />
- <commandText value="INSERT INTO LogDetails (LogDate,loglevel,loglogger,LogMessage,logfunctionname,logbusinessname) VALUES (:log_date,:log_level,:logger,:message,:FunctionName,:BusinessName)" />
- <parameter>
- <parameterName value=":log_date" />
- <dbType value="DateTime" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%date{yyyy-MM-dd HH:mm:ss}" />
- </layout>
- </parameter>
- <parameter>
- <parameterName value=":log_level" />
- <dbType value="String" />
- <size value="200" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%p" />
- </layout>
- </parameter>
- <parameter>
- <parameterName value=":logger" />
- <dbType value="String" />
- <size value="200" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%logger" />
- </layout>
- </parameter>
- <parameter>
- <parameterName value=":message" />
- <dbType value="String" />
- <size value="2000" />
- <layout type="MapgisEgovLog4_WriteLog.MyLayout">
- <conversionPattern value="%property{Message}" />
- </layout>
- </parameter>
- <parameter>
- <parameterName value=":FunctionName" />
- <dbType value="String" />
- <size value="200" />
- <layout type="MapgisEgovLog4_WriteLog.MyLayout">
- <conversionPattern value="%property{FunctionName}" />
- </layout>
- </parameter>
- <parameter>
- <parameterName value=":BusinessName" />
- <dbType value="String" />
- <size value="200" />
- <layout type="MapgisEgovLog4_WriteLog.MyLayout">
- <conversionPattern value="%property{BusinessName}" />
- </layout>
- </parameter>
- </appender>
- <!--flowseting日志-->
- <appender name="flowsetingLoging" type="log4net.Appender.RollingFileAppender,log4net" >
- <param name="File" value="Log\flowseting\" />
- <param name="AppendToFile" value="true" />
- <param name="RollingStyle" value="Date" />
- <param name="DatePattern" value="yyyyMMdd" />
- <param name="StaticLogFileName" value="true" />
- <layout type="log4net.Layout.PatternLayout,log4net">
- <conversionPattern value="%date %-5level %newline %logger - %message%newline %newline" />
- </layout>
- </appender>
- </log4net>
- </configuration>
- <root>
- <level value="ALL" />
- <appender-ref ref="rollingFile" />
- <appender-ref ref="ADONetAppender"/>
- </root>

- <logger name="Oracle_DB">
- <level value="ALL" />
- <appender-ref ref="OracleDB" />
- </logger>

- <appender name="OracleDB" type="log4net.Appender.AdoNetAppender,log4net" >
- <bufferSize value="20"/>
- <connectionType value="System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
- <connectionString value="Data Source=ORCl;User ID=sa;Password=sa;" />
- <commandText value="INSERT INTO LogDetails (LogDate,loglevel,loglogger,LogMessage,logfunctionname,logbusinessname) VALUES (:log_date,:log_level,:logger,:message,:FunctionName,:BusinessName)" />
- <parameter>
- <parameterName value=":log_date" />
- <dbType value="DateTime" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%date{yyyy-MM-dd HH:mm:ss}" />
- </layout>
- </parameter>
- <parameter>
- <parameterName value=":log_level" />
- <dbType value="String" />
- <size value="200" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%p" />
- </layout>
- </parameter>
- <parameter>
- <parameterName value=":logger" />
- <dbType value="String" />
- <size value="200" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%logger" />
- </layout>
- </parameter>
- <parameter>
- <parameterName value=":message" />
- <dbType value="String" />
- <size value="2000" />
- <layout type="MapgisEgovLog4_WriteLog.MyLayout">
- <conversionPattern value="%property{Message}" />
- </layout>
- </parameter>
- <parameter>
- <parameterName value=":FunctionName" />
- <dbType value="String" />
- <size value="200" />
- <layout type="MapgisEgovLog4_WriteLog.MyLayout">
- <conversionPattern value="%property{FunctionName}" />
- </layout>
- </parameter>
- <parameter>
- <parameterName value=":BusinessName" />
- <dbType value="String" />
- <size value="200" />
- <layout type="MapgisEgovLog4_WriteLog.MyLayout">
- <conversionPattern value="%property{BusinessName}" />
- </layout>
- </parameter>
- </appender>

- <parameter>
- <parameterName value=":log_date" />
- <dbType value="DateTime" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%date{yyyy-MM-dd HH:mm:ss}" />
- </layout>
- </parameter>

- <parameter>
- <parameterName value=":logger" />
- <dbType value="String" />
- <size value="200" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%logger" />
- </layout>
- </parameter>

- <parameter>
- <parameterName value=":FunctionName" />
- <dbType value="String" />
- <size value="200" />
- <layout type="MapgisEgovLog4_WriteLog.MyLayout">
- <conversionPattern value="%property{FunctionName}" />
- </layout>
- </parameter>

- <parameter>
- <parameterName value=":message" />
- <dbType value="String" />
- <size value="2000" />
- <layout type="MapgisEgovLog4_WriteLog.MyLayout">
- <conversionPattern value="%property{Message}" />
- </layout>
- </parameter>

- /// <summary>
- /// 包含了所有的自定字段属性
- /// </summary>
- public class LogContent
- {
- public LogContent(string sFunctionName, string sLogMessasge,string sLogBusinessName)
- {
- FunctionName = sFunctionName;
- Message = sLogMessasge;
- BusinessName = sLogBusinessName;
- }
- /// <summary>
- /// 方法名称
- /// </summary>
- public string FunctionName { get; set; }
- /// <summary>
- /// 日志描述信息
- /// </summary>
- public string Message { get; set; }
- /// <summary>
- /// 业务名称
- /// </summary>
- public string BusinessName { get; set; }
- }
- public class MyLayout : PatternLayout
- {
- public MyLayout()
- {
- this.AddConverter("property", typeof(LogInfoPatternConverter));
- }
- }
- public class LogInfoPatternConverter : PatternLayoutConverter
- {
- protected override void Convert(TextWriter writer, LoggingEvent loggingEvent)
- {
- if (Option != null)
- {
- WriteObject(writer, loggingEvent.Repository, LookupProperty(Option, loggingEvent));
- }
- else
- {
- WriteDictionary(writer, loggingEvent.Repository, loggingEvent.GetProperties());
- }
- }
- /// <summary>
- /// 通过反射获取传入的日志对象的某个属性的值
- /// </summary>
- /// <param name="property"></param>
- /// <returns></returns>
- private object LookupProperty(string property, log4net.Core.LoggingEvent loggingEvent)
- {
- object propertyValue = string.Empty;
- PropertyInfo propertyInfo = loggingEvent.MessageObject.GetType().GetProperty(property);
- if (propertyInfo != null)
- propertyValue = propertyInfo.GetValue(loggingEvent.MessageObject, null);
- return propertyValue;
- }
- }
- public class LogContent
- {
- public LogContent(string sFunctionName, string sLogMessasge,string sLogBusinessName)
- {
- FunctionName = sFunctionName;
- Message = sLogMessasge;
- BusinessName = sLogBusinessName;
- }
- /// <summary>
- /// 方法名称
- /// </summary>
- public string FunctionName { get; set; }
- /// <summary>
- /// 日志描述信息
- /// </summary>
- public string Message { get; set; }
- /// <summary>
- /// 业务名称
- /// </summary>
- public string BusinessName { get; set; }
- }

- public class MyLayout : PatternLayout
- {
- public MyLayout()
- {
- this.AddConverter("property", typeof(LogInfoPatternConverter));
- }
- }

- public class LogInfoPatternConverter : PatternLayoutConverter
- {
- protected override void Convert(TextWriter writer, LoggingEvent loggingEvent)
- {
- if (Option != null)
- {
- WriteObject(writer, loggingEvent.Repository, LookupProperty(Option, loggingEvent));
- }
- else
- {
- WriteDictionary(writer, loggingEvent.Repository, loggingEvent.GetProperties());
- }
- }
- /// <summary>
- /// 通过反射获取传入的日志对象的某个属性的值
- /// </summary>
- /// <param name="property"></param>
- /// <returns></returns>
- private object LookupProperty(string property, log4net.Core.LoggingEvent loggingEvent)
- {
- object propertyValue = string.Empty;
- PropertyInfo propertyInfo = loggingEvent.MessageObject.GetType().GetProperty(property);
- if (propertyInfo != null)
- propertyValue = propertyInfo.GetValue(loggingEvent.MessageObject, null);
- return propertyValue;
- }
- }
调用示例
- log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(strPath + "配置文件.xml"));
- ILog log = LogManager.GetLogger("Oracle_DB");
- log.Info(new LogContent("Button1_Click", "测试成功","测试"));
参考:
http://blog.csdn.net/kongwei521/article/details/52242319
关于使用Log4Net将日志插入oracle数据库中的更多相关文章
- .net core 中使用Log4net输出日志到Mysql数据库中
.net core 中使用Log4net输出日志到数据库中去 1.使用Nuget安装log4net 和 mysql.data 2.设置log4net 的配置文件 log4net.config 可以设置 ...
- 知方可补不足~利用LogParser将IIS日志插入到数据库
回到目录 LogParser是微软开发的一个日志分析工具,它是命令行格式的,我们通过这个工具,可以对日志文件进行操作,对于一个几百兆的log文件,使用记事本打开是件很残酷的事,所以,很多情况下,我们都 ...
- Oracle 数据库中日期时间的插入操作
Oracle 中如何插入日期时间类型的数据,首先为了演示, 新建数据表如下 create table t( mydate date); 插入日期时间 SQL> insert into t val ...
- 向Oracle数据库中插入数据出错:ORA-01036 无效的变量名或数据
向Oracle数据库中插入数据出错: 经过排查,因为Update数据时没有出错,所以OracleHelper没有问题: 看异常信息提示:无效的变量和数据,应该是SQL语句的问题,调试时所传的实例Use ...
- Oracle数据库中插入日期型数据(to_date的用法)(转载)
往Oracle数据库中插入日期型数据(to_date的用法) INSERT INTO FLOOR VALUES ( to_date ( '2007-12-20 18:31:34' , 'YYY ...
- 利用LogParser将IIS日志插入到数据库
利用LogParser将IIS日志插入到数据库 上面的博文是定制一个计划任务来将log日志定时的导入数据库 下面这篇博文是用cmd指令将日志导入到一张sql表中,是一次性操作 Log P ...
- SQL语句往Oracle数据库中插入日期型数据(to_date的用法)
Oracle 在操作数据库上相比于其他的 T-sql 有微小的差别,但是在插入时间类型的数据是必须要注意他的 to_date 方法,具体的情况如下: --SQL语句往Oracle数据库中插入日期型数据 ...
- Oracle数据库中SYS、SYSTEM、DBSNMP、SYSMAN四用户的区别
[转] SYS.SYSTEM.DBSNMP. Oracle 数据库中 SYS.SYSTEM.DBSNMP.SYSMAN 四用户的区别 用户: SYS 用户: SYS,默认密码为 CHANGE_ON ...
- Oracle数据库中实现mysql数据库中auto-increment功能
在Mysql数据库中,想要实现一条数据的自增一功能(即插入此数据时填写null即可,系统自动+1),可直接在所在列使用语句auto-increment. id int primary key auto ...
随机推荐
- MongoDb安装--yum安装
本帖最后由 草包 于 2017-5-2 09:57 编辑 [Shell] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 ...
- 自动化运维工具——puppet详解(一)
一.puppet 介绍 1.puppet是什么 puppet是一个IT基础设施自动化管理工具,它能够帮助系统管理员管理基础设施的整个生命周期: 供应(provisioning).配置(configur ...
- springCloud Hystrix 断路由
第一步加入依赖: <dependency> <groupId>org.springframework.cloud</groupId> <artifactId& ...
- 初识java这个小姑娘(三)
说烂了的面向对象 我要说的面向对象,其实是一个我自己都觉的有点恶心的东西. 它是java语言入门如此初级的一个概念.作为一个老鸟,你可以吐口水给我,我可以把它们擦干,但作为总结还得说一说. 因为对于一 ...
- java学习笔记之StringBuilder
StringBuilder总结 StringBuilder概述: StringBuilder是一个线程不安全的类,他在字符串连接方面性能尤其出色 StringBuilder类的构造方法: 1.空参数构 ...
- API Gateway - KONG 安装与配置
简介 Kong,是由Mashape公司开源的,基于Nginx的API gateway 特点 可扩展,支持分布式 模块化 功能:授权.日志.ip限制.限流.api 统计分析(存在商业插件Galileo等 ...
- 》》豆瓣API
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- 诡异的 "password取回" 邮件问题
大部分系统中都有"找回password"的功能,我们的平台也做了此功能,用户可通过 短信,邮件 找回password. 当中对于邮件找回password的方式遇到奇特的问题.记录下 ...
- 为了提高性能,怎样动态载入JS文件
超级表格是一款多人协作的在线表格.程序相当复杂,用到十几个JS文件. 可是有些文件是在打开某些类型的表格时才须要载入. 比如,仅仅有当打开甘特图表格时,才须要载入gantetu.js文件. 那么问题来 ...
- javascript中的事件Event
一.事件流 1.事件流:描述的是从页面中接受事件的顺序 IE的事件流是事件冒泡流,Netscape的事件流是事件捕获流. 2.事件冒泡 IE的事件流叫做事件冒泡(event bubbing),即事件开 ...