`
crayster
  • 浏览: 50912 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

log4net输出到oracle的艰难排错过程

阅读更多
问题很简单:使用log4net,把log插入到oracle。
初次接触大名鼎鼎的log4net,网上一搜,资料还真不少……看起来确实挺简单的,在配置文件里增加AdoNetAppender即可。可是实际一操作才发现水还是蛮深的。无头苍蝇般乱撞了3个小时,终于搞定,特此记录一下。

首先,基本操作:把baidu来的代码copy到自己建的工程里去。
1. 建一个console工程
2. 添加引用: log4net, System.Data.OracleClient
3. 添加App.config,内容大致如下(有错版):
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
  </configSections>
  
  <log4net>
    <appender name="ADONetAppender_Oracle" type="log4net.Appender.AdoNetAppender">
      <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=xxx;Password=xxx;" />
      <commandText value="INSERT INTO Users.My_Log ([Log_Message]) VALUES (@msg)" />
      <bufferSize value="1" />
      <parameter>
        <parameterName value="@msg" />
        <dbType value="String" />
        <size value="1024" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%message" />
        </layout>
      </parameter>
    </appender>

    <root>
      <level value="DEBUG" />
      <appender-ref ref="ADONetAppender_Oracle" />
    </root>
  </log4net>
</configuration>

4. 写测试代码GetLogger,输出等等
5. 手动CREATE TABLE

一切就绪,运行~~ NG
没有报错,DB里也没有加进数据。
于是只能继续百度,发现有很多说法,一一试过仍然没有任何反应。

我就郁闷了,这么牛B的log4net。你搞不定也就算了,为啥连一点debug信息都不给呢。又继续搜了下,发现我错了。
引用
log4net可以输出internal debug信息,只要在配置文件里加上(configuration根节点下):
  <appSettings>
    <add key="log4net.Internal.Debug" value="true "/>
  </appSettings>


有了debug信息就方便多了:
引用
第一条错误:
System.Data.OracleClient.OracleException: ORA-01036

参数不对。参数?那把@msg改成:msg试试。

Oh yeah,ORA-01036没有了,不过来了这个:
引用
System.Data.OracleClient.OracleException: ORA-00928

百度一下,说是可能在列名上加了引号。难道log4net会把[ ]换成引号?
于是去掉列[Log_Message]的中括号。

然后:
引用
System.Data.OracleClient.OracleException: ORA-00942

表不存在?嗯。。。那把表空间名Users去掉看看。

OK,搞定了!
最终版配置文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
  </configSections>
  
  <appSettings>
    <add key="log4net.Internal.Debug" value="true "/>
  </appSettings>
  
  <log4net>
    <appender name="ADONetAppender_Oracle" type="log4net.Appender.AdoNetAppender">
      <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=xxx;Password=xxx;" />
      <commandText value="INSERT INTO My_Log (Log_Message) VALUES (:msg)" />
      <bufferSize value="1" />
      <parameter>
        <parameterName value=":msg" />
        <dbType value="String" />
        <size value="1024" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%message" />
        </layout>
      </parameter>
    </appender>

    <root>
      <level value="DEBUG" />
      <appender-ref ref="ADONetAppender_Oracle" />
    </root>
  </log4net>
</configuration>
0
0
分享到:
评论

相关推荐

    log4net保存日志到MySql数据库

    本文将深入探讨如何使用log4net将日志保存到MySQL数据库,并涉及日志加密和调试日志的使用。** ### 1. log4net简介 Log4net是Apache软件基金会的开源项目,它是.NET平台上的一个强大的日志记录工具,提供灵活的...

    Oracle排错流程图

    总的来说,“Oracle排错流程图”是一份实用的工具,它将复杂的Oracle数据库排错和恢复过程简化为可视化步骤,使得DBA能够遵循明确的路径来处理各种问题。结合实际的Oracle环境和具体的错误信息,这份流程图将大大...

    oracle数据库备份恢复排错指南

    oracle数据库备份恢复排错指南

    Oracle排错 DBCA建库诡异问题处理--rac环境不能创建rac库

    ### Oracle排错 DBCA建库诡异问题处理--rac环境不能创建rac库 #### 故障处理概述 本文主要探讨了在Oracle RAC环境中利用DBCA(Database Configuration Assistant)工具进行数据库创建时遇到的一个特殊问题——无法...

    Log4j工程代码

    1. **配置文件**:如`log4j.properties`或`log4j.xml`,定义了日志的输出格式、级别、目的地等。 2. **Logger实例**:在代码中创建`Logger`对象,用于记录日志。如`Logger logger = Logger.getLogger(Log4jTest....

    oracle10g安装及排错

    Oracle 10g是一款经典的数据库管理系统,其安装过程涉及多个步骤和系统配置,特别是对于初学者来说,理解和处理安装中的问题至关重要。以下是对Oracle 10g安装及排错的详细解析: 一、VNC远程登录 CentOS 安装 ...

    日志记录(log4j等)介绍.doc

    日志(Log)主要用于记录程序运行过程中的各种信息,这对于程序部署后的排错调试至关重要。通过记录日志,开发人员能够追踪到软件运行时的具体状态,进而帮助诊断问题。此外,将日志信息持久化至文件或数据库等存储...

    ORACLE排错笔记[归类].pdf

    ORACLE排错笔记[归类].pdf

    Log2Console

    log4net是Apache软件基金会下的一个开源项目,广泛应用于.NET开发环境中,提供灵活的日志记录功能,帮助开发者在调试和排错时获取必要的信息。 **一、Log2Console的特点** 1. **易用性**:Log2Console的设计理念...

    Oracle高可靠并行集群安装排错.pdf

    【Oracle高可靠并行集群安装排错】 在构建Oracle高可靠并行集群(RAC)时,确保系统的稳定性和无故障运行是至关重要的。Oracle RAC是一种分布式数据库系统,它允许多台服务器共享同一个数据库实例,从而提高可用性...

    Linux TS 排错经验

    常用的日志文件包括/var/log/messages、/var/log/dmesg、/var/log/auth.log和/var/log/boot.log。这些日志可以帮助管理员了解故障发生前后的系统状态。 使用各种诊断工具也是排查故障的重要手段。例如,iostat可以...

    易语言文本排错工具

    在编程过程中,文本处理是一项基础且重要的任务,而“易语言文本排错工具”就是专门针对这一需求开发的一款实用软件。本文将详细介绍该工具的功能、实现原理以及如何使用它来解决文本处理中的常见问题。 首先,我们...

    BGP配置与排错中文PPT

    这个过程可以通过检查邻居关系、输入策略机、输出策略机和路由表等来实现。 本资源摘要信息详细介绍了BGP路由协议的配置和排错,涵盖了BGP协议的基本概念、配置方法、排错策略和常见问题解决方案,为读者提供了一个...

    配置镜像数据库(包括Troubleshooting 排错过程,相当的详细)

    ### 数据库镜像配置详解及排错指南 #### 一、前言 ...需要注意的是,在实际操作过程中可能会遇到各种意外情况,因此熟练掌握排错技巧是非常重要的。希望本文能够帮助您顺利完成数据库镜像的配置工作。

    Linux启动排错实例

    Linux启动过程是一个复杂而有序的序列,涉及到许多关键组件和服务的初始化。对于新手来说,理解这个过程并学会排错是成为Linux系统管理员的基础。本文将深入探讨Linux启动排错实例,帮助你掌握这一核心技能。 首先...

    F5服务器负载LTM配置与排错

    2. 使用`tail –f /var/log/liveinstall.log`命令查看具体的安装过程及配置导入过程,以便监控升级是否顺利进行。 安装补丁时,使用命令`tmsh install sys software hotfix`进行补丁安装,并用`watch tmsh show sys...

    cisco packet tracer排错实验集合

    同时,熟悉Cisco Packet Tracer也能为CCNA、CCNP等Cisco认证考试做好准备,对于寻求网络相关职业的人来说,这是一个必不可少的训练过程。 总之,"cisco packet tracer排错实验集合"是一份全面且实用的学习资料,...

    oracle数据同步到Greenplum的python脚本

    path = '/home/oracle/PyETL2.0/log/'+sys.argv[1] isExists = os.path.exists(path) if not isExists: os.makedirs(path) #shutil.move(path,path+) logger = Log.log(path) #读取配置文件 ...

Global site tag (gtag.js) - Google Analytics