0

我正在使用 Log4Net 而不是使用 XML 配置文件,而是完全用代码构建 fileAppender 和 AdoNetAppender。当 adoNetAppender 无法连接到指定的数据库时,它会消费并将错误写入控制台窗口而不是抛出它。这使我无法抓住。最终我想捕获配置错误,然后加载 fileAppender 以防数据库关闭。

try {
    log4net.Repository.Hierarchy.Hierarchy hier = log4net.LogManager.GetRepository() as log4net.Repository.Hierarchy.Hierarchy;

    if (hier != null)
    {

        log4net.Appender.AdoNetAppender adoAppender = new log4net.Appender.AdoNetAppender();
        adoAppender.Name = "AdoNetAppender";
        // more code..
}
catch (Exception ex)
{
    LoadFileAppender(level);
    Log log = new Log("AdoAdaptorFail");
    log.Error("AdoAdaptor Failed", "System", ex);
}

由于消耗了这个错误,它永远不会命中这个 catch 语句。

关于如何处理的任何建议?

4

1 回答 1

1

也许考虑设置ReConnectOnError属性(连接字符串中的连接超时非常短):

http://logging.apache.org/log4net/release/sdk/log4net.Appender.AdoNetAppender.ReconnectOnError.html

Log4net 是专门制作的,因此它永远不会出现异常。我想您可以修改附加程序或从中派生以更改此行为。

于 2011-07-08T15:43:50.903 回答