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

     

     

  • 相关阅读:
    Python 模块 itertools
    Python 字符串的encode与decode
    python 模块 hashlib(提供多个不同的加密算法)
    暴力尝试安卓gesture.key
    hdu 1300 Pearls(DP)
    hdu 1232 畅通工程(并查集)
    hdu 1856 More is better(并查集)
    hdu 1198 Farm Irrigation(并查集)
    hdu 3635 Dragon Balls(并查集)
    hdu 3038 How Many Answers Are Wrong(并查集)
  • 原文地址:https://www.cnblogs.com/liweis/p/4848846.html
Copyright © 2011-2022 走看看