2010-02-14 5 views
30

현재 로깅을 위해 log4net을 사용하여 ASP.Net-MVC 응용 프로그램을 구축하고 있지만 로거는 무작위로 멈춘 것처럼 보입니다. 행복하게 잠시 로그인 한 다음 중지하고 일정 시간이 지나면 다시 시작됩니다. 나는 그것이 로깅을 재개하게 만드는 것이 무엇인지조차 확신하지 못한다. 몇 분의 메시지가 손실되는 것을 말하는 것이 아닙니다. 때로는 1 시간 정도와 같이 오랜 기간 동안 사라지는 경우도 있습니다.Log4net은 로그를 임의로 중지합니다.

왜 이렇게 멈추고 시작하나요? 어떻게하면 올바르게 무작위로 멈추지 않도록 구성해야합니까?

여기 내 구성입니다 :

<log4net debug="true"> 
<appender name="RollingLogFileAppender" 
     type="log4net.Appender.RollingFileAppender"> 

    <file value="..\Logs\\CurrentLog.txt" /> 
    <appendToFile value="true" /> 
    <datePattern value="yyyyMMdd" /> 

    <rollingStyle value="Date" /> 
    <filter type="log4net.Filter.LevelRangeFilter"> 
    <acceptOnMatch value="true" /> 

    <levelMin value="INFO" /> 
    <levelMax value="FATAL" /> 
    </filter> 

    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern 
    value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" /> 
    </layout> 

</appender> 

<root> 
    <level value="INFO" /> 
    <appender-ref ref="RollingLogFileAppender" /> 
</root> 

+1

(안 디자인으로,이를 다시 구성 ..) 문제의 이러한 종류의 원인이 - http://neilkilbride.blogspot.com.au 참조 /2008/04/configure-log4net-only-once.html – Jonno

+0

이유를 찾은 경우 문제의 원인을 설명하는 답변이나 의견을 추가 하시겠습니까? –

+0

예, Mark가 말한 것과 같이 문제를 일으킨 원인을 파악하는 것이 좋습니다. 그건 그렇고, 나는 같은 문제가 있었고 ADONetAppender 설정에서 ReconnectOnError를 true로 설정했다. – Jportelas

답변

56

Log4Net 것이다 fail silently 뭔가 잘못하고 그것의 펜더에 쓸 수없는 경우. 이것은 실제로 좋은 일입니다. 실패한 로깅으로 인해 시스템이 정상적으로 작동하지 않을 수도 있지만, 예상대로 로깅되지 않을 때 성가신 일이 될 수 있습니다.

가장 좋은 방법은 log4net 자신의 internal logging을 켜서 진단을 수행하고 실패한 이유를 확인하는 것입니다. 앱의 설정 파일 추가에 따라서

:

<configuration> 
    ... 
    <system.diagnostics> 
     <trace autoflush="true"> 
      <listeners> 
       <add 
        name="textWriterTraceListener" 
        type="System.Diagnostics.TextWriterTraceListener" 
        initializeData="C:\tmp\log4net.txt" /> 
      </listeners> 
     </trace> 
    </system.diagnostics> 
    ... 
</configuration> 

은이 캡처 : 당신이 추가 할 수 있도록, System.Diagnostics.Trace로 전송됩니다 내부 로깅이 켜집니다

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
     <add key="log4net.Internal.Debug" value="true"/> 
    </appSettings> 
</configuration> 

파일.

+1

그런 설정 파일의 예가 더 있습니까? 수많은 변형을 시도했으며 XmlSerializationReader에서 XML 오류가 계속 발생합니다. 비어있는 ''태그조차도 예외와 그렇지 않은 것의 차이입니다. –

+0

동일한 문제가 있는데, 내 경우 표준 파일 대화 상자를 열 때마다 [Box] (https://box.com) 아이콘 오버레이 DLL이 in-process log4net.config를 덮어 씁니다. 그 자체로 –

+0

시스템 모니터링 및 오류 알림 도구가있을 수 있기 때문에 실제로는 좋지 않습니다. 로깅을 중지하면 예외가 발생한다는 것을 알 수있는 방법이 없습니다.이 진절머리 나는 로깅 도구를 싫어하십시오. 내가 사용하는 버전에 관계없이 항상 두통이 있습니다. 항상 두통이 있습니다. 진절머리 나는 개발자의 진절머리 나는 제품 .. – sotn

0

응용 프로그램 수명주기에서 가능한 한 빨리 테스트 로그 메시지를 보내십시오. 단지 LogManager.GetLogger("Init").Info("Starting logging") 만 수행하면됩니다. 다른 참조 된 코드가 처음 로깅을 시작하면 초기화 프로세스의 일부가 실패 할 수 있습니다 (한 번만 수행하는 다른 어셈블리의 설정을로드 할 때).

는 여기에 읽기 : https://logging.apache.org/log4net/release/faq.html#first-log 내 경우는 로깅을 다시 한에서

관련 문제