2010-11-19 5 views
1

항상 로그 값을 원할 때 응용 프로그램에서 몇 가지 위치를 선택했습니다. Log.Info()를 사용하여 간단히 남겨 둘 수는 있지만 레벨 구성을 우연히 변경하여 비활성화 할 수없는 솔루션을 선호합니다. 이 경우 log4net을 비활성화하지 않는 한 이러한 로그 문이 실행되기를 바랍니다.log4net을 사용하여 항상 값을 기록하십시오.

가장 좋은 방법은 무엇입니까?

그냥 some information 하나의 옵션이 비상 위의 설정 값을 사용자 지정 수준을 만드는 것입니다 것처럼 보이지만 그게 내가 실현하고 있지 않다 부작용이 잔인 끔찍한 해킹 또는 합법적인지 나도 몰라보고

선택권. 문서에서 명확한 지침을 찾을 수 없었습니다.

+0

내 대답을 시도 했습니까? 도움이 되었습니까? – wageoghe

답변

0

내가 log4net 전문가가 아니지만, 이런 일이 당신이 원하는 것을 할 수 있습니다

이 코드는 LogManager의에서 명명 된 로거를 얻을 것이다 프로그램의 레벨을 "ALL"을 설정합니다. 나중에 코드에서이 로거를 검색하면 구성 파일에서 로그 수준이 OFF로 설정되어 있어도 항상 기록됩니다. 테스트하려면

는 다음 아래의 코드를 사용하는 config 파일에서 "OFF"로 루트 로그 레벨을 설정합니다

log4net.ILog log = log4net.LogManager.GetLogger("abc"); 
    log.Info("this won't log because root logger is OFF"); 

    //Reset the level 
    log4net.Repository.Hierarchy.Logger l = (log4net.Repository.Hierarchy.Logger)log.Logger; 

    l.Level = l.Hierarchy.LevelMap["ALL"]; 

    //Try to log again 
    log.Info("this will log because we just reset abc's level to ALL"); 

나는 그것을 테스트하고 그것을 작동하는 것처럼 보인다.

이 정보는 herehere입니다.

관련 문제