• log4net写入DB2备忘 via OLEDB & ODBC


    在项目中遇到需要记录操作日志的需求,由于是一个外挂系统,因此不用考虑到公司框架的限制,直接二层架构直连数据库,考虑使用log4net连接DB2。请宽恕我这个非软工科班出身的IT小白,以前一直在知道有个log4net,但在工作中公司有一套自己的框架记履历,一直没有机会接触。这次嘛,正好就这个机会小试身手。

    在这里先简答介绍一下这个外挂系统。很简单,.NET+DB2的配置,两层架构,大致画面都有了,需要切入权限控制和日志系统。工作很顺利的开展了,权限系统嘛小意思,日志方面log4net拿来就用,大不了百度一下嘛。参考百度出来MySql的ODBC配置这里抄抄那里抄抄,这可到好,一运行,傻眼了,不报错,也没写入自己建的表,头疼。

    本着一向的钻研精神,接着直接百度了log4net+DB2+ODBC等等各种关键词的排列组合,无奈,百度上log4net+DB2+ODBC的关键词几乎没有,都是sqlserver、Oracle云云的,崩溃,大家都不用log4net连DB2吗?唯一找到的一篇相关的博文,博主也只是说DB2 V9.7对log4net via ODBC的支持不好,根本连不上:(,好吧~~~~“根本连不上!!!”(后面我的结果证明他是错的哦)。接着小白求助了CSDN的论坛——没回音;想上stackoverflow问问老外,好久不上,google的JS库被墙了,问不出问题——无语。

    就这样小白怀着不爽的心情熬到了今晚。就在小白一边咒骂log4net怎么连不上数据库连个报错都没有,一边断点调试的时候,发现了ConfigurationMessages的一坨履历,上面赫然写着,"找不到System.Data.dll"(大致是这个意思,小白就不在此贴图了)。灵光一闪,有眉目了,将引用中System.Data.dll复制本地设置成true,运行之,成了!

    在此,小白将log4net通过ODBC于OLEDB连接DB2的配置列在下面:

    log4net via ODBC

     1 <?xml version="1.0" encoding="utf-8" ?>
     2 <configuration>
     3   <configSections>
     4     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
     5   </configSections>
     6 
     7   <log4net debug="true">
     8     <root>
     9       <level value="INFO"></level>
    10       <!--文件记录格式-->
    11       <!--<appender-ref ref="rollingFile"/>-->
    12       <appender-ref ref="AdoNetAppender_DB2"/>
    13     </root>
    14 
    15     <appender name="AdoNetAppender_DB2" type="log4net.Appender.AdoNetAppender,log4net">
    16       <bufferSize value="1"/>
    17 
    18        <!--SQL数据源-->
    19       <connectionType value="System.Data.Odbc.OdbcConnection, System.Data"/>
    20 
    21        <!--SQL连接字符串-->
    22       <connectionString value="Driver={IBM DB2 ODBC DRIVER};Hostname=192.168.44.11;Port=50001;Database=xxx;Uid=xxx;Pwd=xxx;Protocol=TCPIP;" />
    23       <commandText value="INSERT INTO xxx VALUES (' ', ' ', ' ', ?, ' ', ' ')"/>
    24 
    25       <parameter>
    26         <parameterName value="@log_level" />
    27         <dbType value="String" />
    28         <size value="50" />
    29         <layout type="log4net.Layout.PatternLayout" value="%level" />
    30       </parameter>
    31     </appender>
    32   </log4net>
    33 </configuration>

    log4net via OLEDB

     1 <?xml version="1.0" encoding="utf-8" ?>
     2 <configuration>
     3   <configSections>
     4     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
     5   </configSections>
     6 
     7   <log4net debug="true">
     8     <root>
     9       <level value="INFO"></level>
    10       <!--文件记录格式-->
    11       <!--<appender-ref ref="rollingFile"/>-->
    12       <appender-ref ref="AdoNetAppender_DB2"/>
    13     </root>
    14     <appender name="AdoNetAppender_DB2" type="log4net.Appender.AdoNetAppender,log4net">
    15       <bufferSize value="1" />
    16       <connectionType value="System.Data.OleDb.OleDbConnection, System.Data" />
    17       <connectionString value="Provider=IBMDADB2;Hostname=192.168.44.11;Port=50001;UID=xxxx;PWD=xxx;Database=xxx;Protocol=TCPIP;" />
    18       <commandText value="INSERT INTO xxx VALUES (' ', ' ', ' ', ?, ' ', ' ')" />
    19       <parameter>
    20         <parameterName value="@message" />
    21         <dbType value="String" />
    22         <size value="4000" />
    23         <layout type="log4net.Layout.PatternLayout">
    24           <conversionPattern value="%message" />
    25         </layout>
    26       </parameter>
    27     </appender>
    28   </log4net>
    29 </configuration>

    最后,再贴一张如何检查log4net错误的断点视图,以后可以找到从哪查错咯:

  • 相关阅读:
    【bzoj3566】[SHOI2014]概率充电器 树形概率dp
    【bzoj1419】Red is good 期望dp
    【bzoj2698】染色 期望
    【bzoj2134】单选错位 期望
    【bzoj1022】[SHOI2008]小约翰的游戏John 博弈论
    【bzoj3170】[Tjoi 2013]松鼠聚会 旋转坐标系
    【bzoj2338】[HNOI2011]数矩形 计算几何
    【bzoj2085】[Poi2010]Hamsters Hash+倍增Floyd
    【bzoj1014】[JSOI2008]火星人prefix Splay+Hash+二分
    【bzoj2795】[Poi2012]A Horrible Poem Hash+分解质因数
  • 原文地址:https://www.cnblogs.com/tonychan/p/4060549.html
Copyright © 2020-2023  润新知