关于使用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 ...
随机推荐
- hdu 1150 Machine Schedule 最小覆盖点集
题意:x,y两台机器各在一边,分别有模式x0 x1 x2 ... xn, y0 y1 y2 ... ym, 现在对给定K个任务,每个任务可以用xi模式或者yj模式完成,同时变换一次模式需要重新启动一次 ...
- 关于PHP 采集类
伟大的筒子们,我们需要经常采集. 不知道大家每次采集的时候会不会烦躁,不用八爪鱼,不用PYTHON 是不是感到手无力,看到正则匹配每次匹配不对,一换采集内容就是头疼,重新拼写正则? 不要说是高手 ,就 ...
- 了解web及网络基础
了解web及网络基础 以下内容简单的说明了一下TCP/IP协议族中HTTP协议.DNS服务.IP协议的一些概念和关系.笔者只是对知识点进行了总结,仅供参考: ) 转载请注明出处:了解web及网络基础 ...
- UWP 实现App多语言为所欲为切换
为所欲为,嗯 话不多说,先看效果吧(事先说明,我的方法不是最好的,但是我用着最有效.) [吐槽一下博客园上传的图片,我的App敲鸡漂亮滴,自带亚克力效果,怎么图片上传上来这么多的噪点啊.] [ 商店地 ...
- Codeforces 869C The Intriguing Obsession
题意:有三种颜色的岛屿各a,b,c座,你可以在上面建桥.联通的点必须满足以下条件:1.颜色不同.2.颜色相同且联通的两个点之间的最短路径为3 其实之用考虑两种颜色的即可,状态转移方程也不难推出:F[i ...
- Docker: 限制容器可用的 CPU
默认情况下容器可以使用的主机 CPU 资源是不受限制的.和内存资源的使用一样,如果不对容器可以使用的 CPU 资源进行限制,一旦发生容器内程序异常使用 CPU 的情况,很可能把整个主机的 CPU 资源 ...
- for循环,for in和for of的区别
最近在写代码,总在被烦恼着到底遍历的时候到底该使用for循环,还是使用for in或者for of ,今天查了以下 ,写出来. 我们一般用for循环来遍历数组,因它可以按顺序的返回每一个索引的值或者 ...
- day8、 显示Linux路由表、各列信息
要用到的命令是 route route 命令 显示和设置Linux路由表 -A:设置地址类型: -C:打印将Linux核心的路由缓存: -v:详细信息模式: -n:不执行DNS反向查找,直接显示 ...
- MySql的隔离级别和锁的关系
一.事务的4个基本特征 Atomic(原子性): 事务中包括的操作被看做一个逻辑单元.这个逻辑单元中的操作要 么所有成功.要么所有失败. Consistency(一致性): 仅仅有合法的数据能 ...
- 【转】Spring 中三种Bean配置方式比较
今天被问到Spring中Bean的配置方式,很尴尬,只想到了基于XML的配置方式,其他的一时想不起来了,看来Spring的内容还没有完全梳理清楚,见到一篇不错的文章,就先转过来了. 以前Java框架基 ...