2017-01-26 1 views
1

log4net 로거를 비활성화하려면이 게시물에 대해 알고 : Stackoverflow: How to completely disable log4net.로거 완전히 비활성화하는 방법

그러나 나는 다음과 같은 코드를 사용하면 로거가 실제로 비활성인지 궁금 :

log.debug("some debug text"); 

내가 설정 파일에 설정 스위치 같은 것을 설정하는 별도의 솔루션 (의 app.config)에 대해 생각

즉 내에서의 app.config

<appSettings> 
    <add key="enableLog" value="true"/> 
</appSettings> 

그 소스 코드 : 즉, 예를 들어, 생략 또는 출력 로깅 소스 코드의 일부를 이용할 수 있도록 프로그램 신호 ..., 당신은 생각 하는가 좀 더 성능을 위해 솔루션의 같은 종류의 필요하거나 바보입니다 무슨 ...

if (enableLog) log.debug("some debug text");

를 설정의 값을 결정하고 지역 변수에 넣어 생각?

+4

마이크로 최적화와 비슷하지만 좋은 이유가 없다면 원치 않는 것입니다. –

+0

[log4net을 완전히 비활성화하는 방법]의 가능한 복제본 (http://stackoverflow.com/questions/14621083/how-to-completely-disable-log4net) – Peter

답변

3

이것은 log4net이 이미 수행 한 것입니다. 전화 할 때

log.debug ("some debug text");

는 내부적

<log4net threshold="OFF" /> //it could also be ALL, DEBUG, INFO etc.. 

log4net.xml 대한 구성 파일을 확인하고이 스위치 오프되는 경우, 상기 로깅 더를 계속할 것이다.

내 의견으로는 log4net이 이미 수행 했으므로 이러한 최적화가 필요하지 않습니다. 나는 수표의 추가 층이 성능에 눈에 띄는 향상을 가져올 것이라고 말하지 않을 것이다. 그것은 당신의 어플리케이션이 무엇인지 그리고 1 밀리 초가 필수적인지에 달려 있습니다. 또한 log4net이 매우 최적화되어 있고 내 프로젝트에서 그런 최적화를 할 필요가 없다고 말할 수 있습니다.

2

app.config 설정을 사용하고 있다고 가정하면 ... log4net이 비슷한 옵션을 제공한다는 것을 알게 될 것입니다. 로그 레벨을 설정하여 log4net 구성에서 사용자가 제어하는 ​​IsDebugEnabled 플래그를 항상 확인할 수 있습니다.

if (Log.IsDebugEnabled) 
    Log.DebugFormat("My text"); 

어쨌든 모든 로깅을 막기 위해 필터를 사용할 수도 있습니다. 와 비슷한 것

<filter type="log4net.Filter.DenyAllFilter" /> 

희망이 있습니다.

+0

로그를 사용하는 데 별다른 의미가 없다는 것을 지적합니다. 스트레이트 텍스트를 로깅하는 경우 IsDebugEnabled. 유용하게 사용되는 곳은 로그 명령이 피하려고하는 속성이나 메소드를 호출하는 경우입니다. – sgmoore

관련 문제