2010-07-30 8 views
0

Best way to dynamically set an appender file path에서 % property {}를 사용하여 파일 이름을 동적으로 설정하는 방법을 제안했지만 아래 파일은 "(nul) .log"로 생성되었습니다.% log4net의 RollingFileAppender에서 속성이 작동하지 않습니다.

file type="log4net.Util.PatternString" value="C:\My_Log\%property{service}.log" 

도움으로 나는 XML 파일에 선언 한 코드

log4net.GlobalContext.Properties["service"] = _servicename.ToString(); 
_flatFileLogger = LogManager.GetLogger("FlatFileLogger"); 
_flatFileLogger.Debug(logData.ToString()); 

은 많은 감사.

답변

2

으로 설정하기 전에 log4net을 초기화해야합니다.

+0

덕분에, 나는이 프로그램의 시작 FlatFileLogger을 선언하고 켰을 때, 그것을 사용하고 , 은 % 속성이 1 log4net.GlobalContext.Properties을 설정 한 직후 [ "서비스"] = _servicename.ToString(); 2. _flatFileLogger = LogManager.GetLogger ("FlatFileLogger"); 3. _flatFileLogger.Debug (logData.ToString()); 동일한 시퀀스 –

+0

하지만 log4net 프레임 워크를 어디에서 초기화합니까? GlobalContext 속성을 설정 한 후에 ** logger.Config.XmlConfigurator.Configure()를 호출해야합니다. ** ** 처음 로거에 액세스하기 전에 ** 로거에 액세스해야합니다. – PatrickSteele

+0

Patrick에게 감사드립니다 ... log4net.Config.XmlConfigurator.Configure()를 사용하여 실제로 문제가 해결되었습니다. –

0

로거와 애펜더를 혼동하지 마십시오. 대부분의 사람들은 클래스 당 하나의 로거를 사용합니다 :이 방법은 당신의 로그 메시지를 당신의 클래스와 관련하여 쉽게 적용 할 수 있습니다.

Appenders는 프로그램 구성 방식과 아무 관련이 없습니다. 구성에서 어떤 로거가 어떤 애펜더를 사용해야하는지 알 수 있습니다. 이렇게하면 코드에서 "애 펜더"를 직접 사용하면 큰 유연성을 얻을 수 있습니다.

게시 한 사람보다 먼저 성명을 쓰는 다른 기록원이 있습니까? 그렇다면 파일 첨부자가 이미 초기화되었다고 가정합니다 (null 이름으로). 응답 패트릭에 대한

관련 문제