Обработка ошибок AdoNetAppender, сгенерированных через Log4Net - PullRequest
0 голосов
/ 08 июля 2011

Я использую 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 из-за использования этой ошибки.

Любой совет, как справиться?

1 Ответ

1 голос
/ 08 июля 2011

Может быть, стоит рассмотреть возможность установки свойства ReConnectOnError (с очень коротким временем ожидания в строке подключения):

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

Log4net очень специально создан, чтобы он никогдачерез исключение.Я полагаю, что вы можете либо изменить appender, либо использовать его для изменения этого поведения.

...