2010-04-05 5 views
1

내 C# 응용 프로그램에서 log4net을 사용하고 있습니다. 단일 로그 파일에 텍스트 행을 삽입하는 다른 로거가 있습니다.동등하지 않은 조건의 로거 필터 사용 Log4net

하지만 이제는 동일한 파일에 로그 항목을 게시해서는 안되는 새로운 로거를 추가하고 싶었습니다. 다른 파일에 로그인해야하므로 새 fileAppender를 구성했습니다. 그물에서 찾은 모든 것을 수행 한 후에 내 새 로거에 대해 다른 파일을 만들지 만 첫 번째 로그 파일에도 동일한 값이 표시됩니다.

LogFilters의 사용법을 알고 있다면 이전에 구성된 appender에서 "Logger <> New logger"일치를 추가 할 수 있습니다. 당신의 특별한 클래스 것

<logger name="namespace.special_class" additivity="false"> 
    <appender-ref ref="RollingFileAppender4SpecialMessages" /> 
</logger> 

<root> 
    <level value="ALL" /> 
    <appender-ref ref="StandardRollingFileAppender" /> 
</root> 

이 방법을 다음과 같이

ILog logger1 = LogManager.GetLogger("namespace.special_class"); 

다음 log4net을 구성 할 수 있습니다

감사 Mubashar

답변

2

하면이 같은 당신의 "특별한"로거가있는 가정 자체 파일 첨부자를 사용하십시오. 이 클래스의 로그 메시지가 일반 로그 파일에 필요하면 "추가 성"속성을 제거해야합니다.

+0

흠 루트 로거 나는이 사실을 모르고 있었고 구성에서 실제로 로거 이름을 가지고 있다고 생각하지 않았습니다. 실제로 많은 다른 클래스와 각 클래스를 사용했습니다. ILog logger = LogManager.GetLogger (typeof (myClass))) LoggerFilter를 Not Equal 조건으로 찾고있는 이유는 무엇입니까? 그렇게 할 방법이 있습니까? 어쨌든 대답 주셔서 감사합니다. –

+0

그래서 모든 클래스에 확실히 좋은 로거가 있다는 것을 의미합니다. 하지만 두 번째 파일로 무엇을 가져갈 지 결정하는 방법은 무엇입니까? 이름이 다른 다른 로거가 있습니까? 아니면 두 번째 파일의 특정 "네임 스페이스"의 메시지를 갖고 싶습니까? –

+0

예 모든 클래스에는 서로 다른 로거가 있으며 특정 클래스 로거가 두 번째 파일에 작성해야하는 선이 있습니다. 다른 모든 클래스는 첫 번째 파일로 이동해야합니다. 그 이유는 내가 동등한 일치하지 찾고 있었 : ( –

관련 문제