あなたのためには、アペンダーごとにIErrorHandlerを実装するクラスを作成し、各アペンダーがカスタムエラー処理クラスを使用するように設定することが必要です。これにより、log4net.Internal.Debugを有効にするよりも多くの制御が可能になります。
私はこれを試してみました。私のサンプルでは、Logger
は他の場所で定義されているlog4netロガーです - これはSMTPアペンダーからエラーを取得してファイルに記録することです):
私は私のアペンダ(もちろんあなたも設定でこれを行うことができます)を設定
using System;
using log4net.Core;
namespace Test
{
public class SmtpErrorHandler : IErrorHandler
{
public void Error(string message)
{
Logger.Log.Error(message);
}
public void Error(string message, Exception ex)
{
Logger.Log.Error(message, ex);
}
public void Error(string message, Exception ex, ErrorCode errorCode)
{
Logger.Log.Error(String.Format("{0}{1}Error code: {2}", message, Environment.NewLine, errorCode), ex);
}
}
}
:
emailAppender.ErrorHandler = new SmtpErrorHandler();
これは正しいと思われます。私たちが必要としている数回のうちに、私たちはlog4net.Internal.Debugを有効にしています。 –