0

私は Log4Net を使用しており、XML 構成ファイルを使用する代わりに、fileAppender と AdoNetAppender の両方を完全にコードで作成しています。adoNetAppender は、指定されたデータベースに接続できない場合、エラーをスローするのではなく、消費してコンソール ウィンドウに書き込みます。これでは捕まえられません。最終的には、構成エラーをキャッチし、DB がダウンした場合に備えて 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 に答える