당신에게 적합한 방법은 각 appender에 대해 IErrorHandler을 구현하는 클래스를 만든 다음 각 appender가 사용자 정의 오류 처리 클래스를 사용하도록 구성하는 것입니다. 이것은 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);
}
}
}
: 우리는 Logger.Log.Error을 수행하는 우리 자신의 사용자 정의 클래스를 생성
emailAppender.ErrorHandler = new SmtpErrorHandler();
올바른 것으로 보입니다. 몇 번이나 우리가 필요로하는 동안, 우리는 log4net.Internal.Debug를 켜고 있습니다. –