2014-11-11 3 views
1

정보를 기록하는 테이블이 두 개 있습니다. log4net에 대해 Common.Logging 라이브러리 래퍼를 사용하고 있으며 제대로 구성된 항목이 있지만 로그 테이블에 많은 정보가 기록되는 문제가 발생합니다 ... 알다시피 직관력이 있습니다. 두 테이블Log4Net 여러 Appender, 구성에 문제가있는 다중 테이블

로그 표 감사를 표

다음은 내 구성입니다

<log4net> 
<!-- This will force both loggers to write to both tables--> 
<root> 
    <level value="INFO" /> 
    <appender-ref ref="LogAppender" /> 
    <!--<appender-ref name="Audit" ref="AuditAppender" />--> 
</root> 
<logger name="Log"> 
    <level value="INFO" /> 
    <appender-ref ref="LogAppender" /> 
</logger> 
<logger name="Audit"> 
    <level value="INFO" /> 
    <appender-ref ref="AuditAppender" /> 
</logger> 
<!--SQL LOG TABLE Appender--> 
<appender name="LogAppender" type="log4net.Appender.AdoNetAppender"> .... This writes to Log Table correctly 
</appender> 
<appender name="AuditAppender" type="log4net.Appender.AdoNetAppender"> .... This logs to the Audit Table correctly 
</appender> 
</log4net> 

호출 코드 : 우리는 로거를 만들 수있는 세 가지 방법이

readonly ILog _default = LogManager.GetCurrentClassLogger(); 
    readonly ILog _logger = LogManager.GetLogger("Log"); 
    readonly ILog _auditer = LogManager.GetLogger("Audit"); 
지금은 다시 세 가지가

_default.Info("Default Logger"); 
    _logger.Info("Test get products logging"); 
    _auditer.Info("Test get products audit"); 

내가 모두 실제로는 을하고 _auditer 로거가 감사에 기록하는 로그 테이블에 쓰기 때문에 _default 또는 _logger 그것을 얻으려고 다시 호출하면

테이블 ...

하지만 여기에 문제가 있습니다 ... 내가 가진 방식대로, 감사 테이블 또한 내가 원하지 않는 로그 테이블에 씁니다. 이제 log4net 구성의 루트 노드를 없애면 _logger 로그가 로그 테이블에 기록되고 _auditer가 감사 테이블에 기록되지만 _default 로그는 기록하지 않는다는 점에서 모든 지정된 로그 작성자 만 작동합니다 무엇이든에 ... 그래서 나는 무엇을 여기에서 놓치고 있냐?

답변

3

감사 로거가 루트 로거의 구성을 상속하지 못하게하려면 additivity = false를 설정해야합니다.

<logger name="Audit" additivity="false"> 
    ... 
</logger> 
+0

빙고 그 것이었다! 뭔가 간단 할 거라는 걸 알았어 ... 고마워! – DRobertE