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错误的断点视图,以后可以找到从哪查错咯:

时间: 2024-10-06 10:51:36

log4net写入DB2备忘 via OLEDB & ODBC的相关文章

Log4Net写入到数据库配置过程中的一些小问题备忘

问题1: 在公司进行log4net写入服务器配置的时候,一切正常,但是在家里的机器上,就频繁出现这个问题: SQL Server 2008 报错:已成功与服务器建立连接,但是在登录前的握手期间发生错误 并且这种错误是随机性的,在log4net往数据库插入几条的时候,没问题,但是插入次数一多起来,就频繁报这个错误.后来没办法,网上搜罗了一圈,最终发现了解决方案: 将相关的TCP参数都设置为启动之后,就再没遇到过问题. 问题2,log4net配置都正确,但是一直无法写入数据库. 这个问题困扰了好久,

SQL注入备忘单

Find and exploit SQL Injections with free Netsparker SQL Injection Scanner SQL Injection Cheat Sheet, Document Version 1.4 About SQL Injection Cheat Sheet Currently only for MySQL and Microsoft SQL Server, some ORACLE and some PostgreSQL. Most of sam

[转]Windows环境下尝试安装并配置PHP PEAR备忘

转自:http://wangye.org/blog/archives/266/ 什么是PEAR 来自百度百科:PEAR 是PHP扩展与应用库(the PHP Extension and Application Repository)的缩写.它是一个PHP扩展及应用的一个代码仓库,简单地说,PEAR之于PHP就像是CPAN(Comprehensive Perl Archive Network)之于Perl. 由此可见PEAR是PHP代码的仓库,在这里可以找到很多有用的代码,避免我们重复写一些功能,

『备忘』HttpWebRequest 在 POST 提交时, 标头(Headers)丢失原因

近来研究 HttpWebRequest —— 辅助类完成时,POST JSON数据 总会 丢失标头(Headers). HttpWebRequest POST JSON数据,分如下几步: > 将 JSON 转为 byte[]. > 从 HttpWebRequest.GetRequestStream() 获得 写入流. > 将 byte[] 写入到这个 Stream 中. 类似的 操作,包括 文件上传,POST 表单 —— 最终都要 转换成 byte[] 核心注意事项: 一定不要设置 Ht

Linux常用命令速查备忘

Linux常用命令速查备忘 PS:备忘而已,详细的命令参数说明自己man 一. 启动,关机,登入,登出相关命令 [login] 登录 [logout] 登出 [exit] 登出 [shutdown] 停止系统 [halt] 停止系统 [reboot] 重启动 [poweroff] 切断电源 [sync] 把内存里的内容写入磁盘 [lilo] 安装lilo启动管理程序 [grub] 安装lilo启动管理程序 二. Shell相关命令 [chsh] 切换Shell [history] 显示命令履历

Sphinx 配置文件的说明【备忘】

## 数据源src1 source src1 { ## 说明数据源的类型.数据源的类型可以是:mysql,pgsql,mssql,xmlpipe,odbc,python ## 有人会奇怪,python是一种语言怎么可以成为数据源呢? ## python作为一种语言,可以操作任意其他的数据来源来获取数据,更多数据请看:(http://www.coreseek.cn/products-install/python/) type = mysql ## 下面是sql数据库特有的端口,用户名,密码,数据库

JCS配置项备忘

#开启冗余内存清除 jcs.default.cacheattributes.UseMemoryShrinker=true #闲置内存对象的过期时间 jcs.default.cacheattributes.MaxMemoryIdleTimeSeconds=-1 #内存清除执行间隔(5分钟) jcs.default.cacheattributes.ShrinkerIntervalSeconds=300 MaxMemoryIdleTimeSeconds=-1表示内存对象永不过期,过期的内存对象会从Me

我的acm vim 备忘

一.從命令到編輯模式 a :当前单词后面插入Appendi :当前位置插入Inserto :当前行下新开一行插入Open new lineA :当前行尾插入AppendI :当前行首插入InsertO :当前行上新开一行插入Open new line比較常用就是i,a,o,I,A,O了,將來多試幾次就好了,就很熟悉了. 二.從編輯到命令ESC : ctrl+[ :能起到一样的效果,手指短的同学可以用它代替esc. 三.命令模式中的其他命令在命令模式中的按鍵就很多了,這些介绍参加高速编程基本要用到

C#获取Excel中所有的Sheet名称《转》以备忘

Excel.Application myExcel = new Excel.Application();object missing = System.Reflection.Missing.Value;myExcel.Application.Workbooks.Open(this.txtFile.Text, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missi