나는 의존성 주입 프레임 워크에서 log4net의 올바른 패턴과 사용법을 알아 내려고 노력하고 있습니다.
Log4Net은 ILog 인터페이스를 사용하지만 전화를해야합니다.
LogManager.GetLogger(Reflection.MethodBase.GetCurrentMethod().DeclaringType)
정보를 기록해야하는 각 클래스 또는 메소드에서. 이것은 IoC 원칙에 위배되는 것으로 보이며 Log4Net을 사용하는 것과 연결됩니다.
어딘가에 다른 추상화 레이어를 넣어야할까요?
또한 다음과 같은 현재 사용자 이름과 같은 사용자 지정 속성을 기록해야합니다.
log4net.ThreadContext.Properties["userName"] = ApplicationCache.CurrentUserName;
매번 기억할 필요가없고 로깅중인 현재 메서드를 유지 관리 할 수 있도록 어떻게 캡슐화 할 수 있습니까? 이런 식으로해야합니까, 아니면 마크를 완전히 놓치고 있습니까?
public static class Logger
{
public static void LogException(Type declaringType, string message, Exception ex)
{
log4net.ThreadContext.Properties["userName"] = ApplicationCache.CurrentUserName;
ILog log = LogManager.GetLogger(declaringType);
log.Error(message, ex);
}
}