您的位置:首页 > 数据库 > Oracle

Log4net记录日志到Oracle 11g

2013-06-04 16:39 253 查看
试了多次,当前的Log4net都不支持记录日志到Oracle 11g数据库,于是各种搜索。


1. 下载log4net源代码进行改写


1.1 添加对Oracle.DataAccess的引用


1.2 添加OracleAppender类  点击此处下载


也可以点击此处下载编译好的 log4net.dll


2. 新建Web项目,添加对log4net.dll和Oracle.DataAccess.dll的引用,并进行Web.config配置


2.1 增加section


<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />


       2.2 增加log4net配置

<log4net>
<appender name="OracleAppender" type="log4net.Appender.OracleAppender">
<bufferSize value="1" />
<connectionType value="Oracle.DataAccess.Client.OracleConnection, Oracle.DataAccess, Version=4.113.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
<connectionString value="DATA SOURCE=数据库TNSNAME;USER ID=用户名;PASSWORD=密码"/>
<commandText value="INSERT INTO LOG4NET (LOG_ID, LOG_DATE, LOG_LEVEL, LOG_IDENTITY, LOG_MESSAGE, LOG_EXCEPTION, LOG_LOGGER, LOG_SOURCE) VALUES (LOG4NET_SEQ.nextval, :log_date, :log_level, :log_identity, :log_message, :log_exception, :logger, :source)" />
<parameter>
<parameterName value=":log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout">
<conversionPattern value="%d{yyyy/MM/dd HH:mm:ss}" />
</layout>
</parameter>
<parameter>
<parameterName value=":log_level" />
<dbType value="String" />
<size value="10" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value=":log_identity" />
<dbType value="String" />
<size value="100" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%identity" />
</layout>
</parameter>
<parameter>
<parameterName value=":log_message" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%m" />
</layout>
</parameter>
<parameter>
<parameterName value=":log_exception" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%exception" />
</layout>
</parameter>
<parameter>
<parameterName value=":logger" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value=":source" />
<dbType value="String" />
<size value="1000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%file:%line" />
</layout>
</parameter>
</appender>
<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\\LogInfo\\" />
<param name="AppendToFile" value="true" />
<param name="MaxFileSize" value="10240" />
<param name="MaxSizeRollBackups" value="100" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd".log"" />
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%n日志时间:%d [%t] %n日志级别:%-5p %n日 志 类:%c [%x] %n%m %n" />
</layout>
</appender>
<logger name="loginfo">
<level value="INFO" />
<appender-ref ref="InfoAppender" />
</logger>
<root>
<level value="All"/>
<appender-ref ref="OracleAppender"/>
</root>
</log4net>

      2.3 增加dependentAssembly配置



<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-1.3.0.0" newVersion="1.3.0.0" />
</dependentAssembly>


3. 配置代码记录LOG。(global.asax文件中的Application_Start方法中添加如下代码)


log4net.Config.XmlConfigurator.Configure();
ILog log = LogManager.GetLogger("loginfo");
log.Info("Application Start");


   4 配置Oracle数据库

    4.1 建表

create table LOG4NET
(
log_id        NUMBER not null,
log_date      TIMESTAMP(6),
log_level     VARCHAR2(255),
log_identity  VARCHAR2(255),
log_message   VARCHAR2(4000),
log_exception VARCHAR2(4000),
log_logger    VARCHAR2(255),
log_source    VARCHAR2(1000)
)


    4.2 建序列

create sequence LOG4NET_SEQ
minvalue 1
maxvalue 999999999999999999999999999
start with 53
increment by 1
nocache;


   5. 最终效果



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: