zoukankan      html  css  js  c++  java
  • log4net输出日志到Oracle数据库

    关于log4net的使用,请参考文章:https://www.cnblogs.com/duanjt/p/5850250.html
    前面的使用方式都一样,这里主要就说说appender的配置。
    1.创建Oracle中的表

    create table bdcdataar.log4net_log
    (
           no    int primary key,--序号
           log_date  date,--时间
           log_thread    int,--线程号
           log_level     varchar2(10),--日志等级
           log_location  varchar2(500),--日志位置
           log_message   clob,--消息
           log_exception clob,--异常
           system_id varchar2(50)  --系统id,用于标识不同的系统
    );
    
    create sequence bdcdataar.log4net_log_seq
    minvalue 1  
    maxvalue 999999999  
    start with 1
    increment by 1;  

    2.appender的配置

    <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender,log4net">
        <!--BufferSize为缓冲区大小,只有日志记录超设定值才会一块写入到数据库-->
        <bufferSize value="10" />
    
        <!--引用-->
        <connectionType value="Oracle.ManagedDataAccess.Client.OracleConnection,Oracle.ManagedDataAccess,Version=4.122.19.1, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
    
        <!--连接数据库字符串-->
        <connectionString value="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.103.105)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=wifi)));User Id=stic;Password=soft;" />
    
        <!--插入到表Log-->
        <commandText value="insert into bdcdataar.log4net_log(no,log_date,log_thread,log_level,log_location,log_message,log_exception,system_id) values(bdcdataar.log4net_log_seq.nextval,:log_date,:log_thread,:log_level,:log_location,:log_message,:log_exception,'产品管理系统')" />
    
        <!--日志记录时间,RawTimeStampLayout为默认的时间输出格式-->
        <parameter>
          <parameterName value=":log_date" />
          <dbType value="DateTime"/>
          <layout type="log4net.Layout.RawTimeStampLayout"/>
        </parameter>
    
        <!--线程号-->
        <parameter>
          <parameterName value=":log_thread" />
          <dbType value="Int32" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%thread" />
          </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_location" />
          <dbType value="String" />
          <size value="500" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%location" />
          </layout>
        </parameter>
    
        <!--日志消息-->
        <parameter>
          <parameterName value=":log_message" />
          <dbType value="String" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%message" />
          </layout>
        </parameter>
     
        <!--异常信息。ExceptionLayout 为异常输出的默认格式-->
        <parameter>
          <parameterName value=":log_exception" />
          <dbType value="String" />
          <layout type="log4net.Layout.ExceptionLayout" />
        </parameter>
    </appender>

    关于使用方法这里就不说了,下面说一下connectionType的配置,这里涉及到Version和PublicKeyToken。
    Version,直接找到对应的dll,然后右键-属性就能看到
    PublicKeyToken,需要借助vs命令工具,SN -T Autofac.dll。后面的dll是相对路径

    最后插入数据库的效果如下:

      

    注意:

    1.如果需要查看插入数据库的过程,需要在app.config中增加如下配置:

    <appSettings>
         <add key="log4net.Internal.Debug" value="true "/>
    </appSettings>

     2.xml中配置的参数一定要和sql中的参数顺序一致。

  • 相关阅读:
    Java中的多线程
    谈谈Java中的类型识别RTTI
    Java中的几个重要的数据类型
    编译和运行Java程序
    说说Java中的接口
    说说Java的反射
    谈谈Java中的新的IO特性
    谈谈Java中的内部类
    谈谈Java中的类
    老妈也加入偷菜行列了
  • 原文地址:https://www.cnblogs.com/duanjt/p/13163934.html
Copyright © 2011-2022 走看看