zoukankan      html  css  js  c++  java
  • Log4net中的调错

    在使用log4net时,感觉最麻烦的就是配置文件了,为了使用方便,我不得不先准备好一个完整的配置文件方案,测试了输出到文本、控制台、windows事件、SQL Server数据库都没有问题,但输出到oracle就不那么顺利了。 感觉connectionType和connectionString都没有错,但Oracle中没有输出,它是config文件,又不能插入断点调试,真是纠结!

    调试方法

    其实,强大的log4net本有调试,只不过无知的我不知道怎么用,其实也很简单,在配置文件configuration节点内添加

    代码如下:

    <appSettings>

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

    </appSettings>

    很快,我们在输出窗口看到了问题:

    排错修改

    错误一:ORA-01036: 非法的变量名/编号

    解决:即然知道什么了,那就好修改了。经查,ORA-01036: 非法的变量名/编号原因很可能是存储过程的包体的参数定义与包头的定义不一样,很多时候修改了包体,却忘了修改包头。 另外,创建OracleParameter时,由于构造函数的版本众多,使用了某些版本时,可能会出现这个错误,建议创建OracleParameter时,一定要指定OracleType。

    直接使用Sql 语句时,在Sql 语句中的 参数部分没有使用冒号作为前缀,或者错误使用了Sql Server 的"@"符号都会导致此错误。总之此错误出现在Parameter指定的ParameterName,与实际参数名称不匹配时。

    SqlClient参数表达式:@ParameterName

    OracleClient参数表达式::ParameterName

    注意Version和 PublicKeyToken和判断方法:

    错误二: ERROR [AdoNetAppender] ErrorCode: GenericFailure. Exception while writing to database

    解决:缺少bufferSize value="1"

    错误三:System.Data.OleDb.OleDbException (0x80040E07): 标准表达式中数据类型不匹配。

    解决:输出到Access中时, datetime会转换失败,只设置Access的时间字段为string类型。官网示例中也是使用的string类型。

     

    参考链接:

    http://logging.apache.org/log4net/release/config-examples.html

     

     

  • 相关阅读:
    Session丢失问题解决方案
    SQL 将txt文件导入sql数据库
    Ajax的应用实例解析
    ViewState与Session
    .net动态创建DataTable
    TSQL查询进阶数据集之间的运算
    【朝夕Net社区技术专刊】Core3.1 WebApi集群实战专题WebApi环境搭建运行发布部署篇
    经典SQL语句大全
    “存储过程”的定义及优点
    搜索关键词
  • 原文地址:https://www.cnblogs.com/liweis/p/4848846.html
Copyright © 2011-2022 走看看