문제

이것은 내 log4net 구성 파일입니다

<?xml version="1.0" encoding="utf-8" ?>
<log4net debug="true">
  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
    <filter type="log4net.Filter.LevelRangeFilter">
      <acceptOnMatch value="true" />
      <levelMin value="DEBUG" />
      <levelMax value="FATAL" />
    </filter>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5p %5rms [%-17.17t] %-22.22c{1} %-18.18M - %m%n" />
    </layout>
  </appender>

  <appender name="SmtpAppender" type="MySmtpClientSmtpAppender">
    <to value="a@a.com" />
    <from value="admin@x.com" />
    <subject value="Game Server Monitoring Failed!" />
    <smtpHost value="smtp.x.com" />
    <username value="admin" />
    <password value="x" />
    <bufferSize value="256" />
    <lossy value="true" />
    <evaluator type="log4net.spi.LevelEvaluator">
      <threshold value="ERROR" />
    </evaluator>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5p %d [ThreadId: %t] Class:%c{1} Method:%M %nMESSAGE:%n%m%n%n" />
    </layout>
  </appender>

  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="Logs\\wwwlog" />
    <appendToFile value="true" />
    <datePattern value="yyyyMMdd" />
    <maximumFileSize value="10MB" />
    <!--<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="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
    </layout>
  </appender>


  <root>
    <level value="DEBUG" />
    <appender-ref ref="ConsoleAppender" />
    <appender-ref ref="MySmtpAppender" />
    <appender-ref ref="RollingLogFileAppender" />
  </root>
</log4net>

내가 놓친거야? 명확성, 더 나은 전환 패턴을 유지하면서 로그 크기를 줄이기위한 팁/ 조언이 있습니까? 흥미로운 해킹이 있습니까?

편집 : XML 파일은 코드 블록에 들어 가지 않았습니다. ggestions?

도움이 되었습니까?

해결책

RollingLogFileAppender의 제안은 최소 LockingModel을 사용하는 것입니다. 이 설정을 사용하면 로그 파일이 잠겨 있지 않으며 오히려 각각의 쓰기마다 열린 다음 닫힙니다.

<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />

다른 팁

인코딩을 언급 한 사람은 없습니다. 중국어, 일본어, 아랍어 또는 이중 바이트 언어로 메시지를 기록하는 것이 매우 중요합니다. 예는 다음과 같습니다.

<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
  <encoding value="utf-8" />
  <!-- etc. -->
</appender>

메시지 레벨 (디버그, 정보, 오류 또는 치명적)에 따라 콘솔에 표시 할 때 다른 색상으로 로깅을 위해. 두 번째 애플 렌더는 파일에 저장하는 것입니다.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
   <configSections>
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
   </configSections>

<log4net debug="false">
  <appender name="trace" type="log4net.Appender.TraceAppender, log4net">
    <layout type="log4net.Layout.PatternLayout,log4net">
      <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
    </layout>
  </appender>

 <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender,log4net">
   <mapping>
    <level value="ERROR" />
    <foreColor value="White" />
    <backColor value="Red" />
  </mapping>
  <mapping>
    <level value="DEBUG" />
    <foreColor value="White" />
  </mapping>
  <mapping>
    <level value="INFO" />
    <foreColor value="Green" />
  </mapping>

  <layout type="log4net.Layout.PatternLayout">
    <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
  </layout>
</appender>

<appender name="RollingFile" type="log4net.Appender.RollingFileAppender,log4net" >
  <param name="File" value="Logs/NSCurrent.log" />
  <param name="AppendToFile" value="true" />
  <param name="RollingStyle" value="Date" />
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
  <datePattern value="yyyy-MM-dd" />
  <layout type="log4net.Layout.PatternLayout,log4net">
    <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
  </layout>
</appender>

  <root>
    <priority value="DEBUG" />
    <appender-ref ref="RollingFile" />
    <appender-ref ref="ColoredConsoleAppender" />
  </root>
 </log4net>
 </configuration>

로그 파일 크기를 줄이려면 변환 패턴을 조정할 수 있습니다.

내가 사용하는 형식은 다음과 같습니다.

  <layout type="log4net.Layout.PatternLayout,log4net">
    <!-- a reduced format, saves bit of log space: -->
    <param name="ConversionPattern" value="%date{MM/dd HH:mm:ss,fff}-{%level}-%message%newline"/>
  </layout>

전에:

2012-06-05 10 : 58 : 40,819 [1] 정보 내 앱 [(null)] - 내 앱 - === Star Ting ....

후에:

06/05 11 : 17 : 29,151- {info}-내 앱-=== 시작 ...

참고 : Apache의 문서는 Log4Net에 대해 잘못된 것 같습니다. Log4Net은 FFF를 사용하는 반면, 밀리 초에 SSS를 사용한다고 표시됩니다.

라인 당 작은 절약은 전체적으로 큰 차이를 만들 수 있습니다 :)

최소한의 log4net 구성을 실행하고 XML 형식을 사용하는 것을 선호하지만 웹 앱의 경우 추가하는 것이 좋습니다. 다음을 추가하면됩니다.

<appender name="AspNetTraceAppender" type="log4net.Appender.AspNetTraceAppender" >
   <layout type="log4net.Layout.PatternLayout" />
</appender>

그런 다음 루트 로거 또는 활성화하기로 결정한 곳마다 :

<root>
   <level value="WARN" />
   <appender-ref ref="XmlSchemaFileAppender" />
   <appender-ref ref="AspNetTraceAppender" />
</root>

이를 통해 ASP.NET 세부 정보를 디버깅 할 때 모든 관련 디버그 데이터를 단일 페이지에 모을 수 있습니다. 대부분의 경우 ASP.NET Trace Appender가이를 비활성화하기 위해 댓글을 달았지만 몇 가지 인스턴스에서 실제로 도움을주었습니다. 특히 특정 서버 포스트 백 메서드가 앱에서 끊기가 발생하는 원인을 파악하려고 할 때 실제로 도움이되었습니다. .

이것은 유사한 log4J와 log4net이 얼마나 유사한 지에 따라 약간 도움이 될 수 있습니다. 나는 그것들이 동일한 사양을 기반으로한다고 생각하지만 확실하지 않습니다.

글쎄, 나는 당신에게 log4net config에서 가지고있는 것을 말할 수 없지만, 충분히 좋은 경우 log4j 구성에 내가 가지고있는 것을 말할 수 있습니다 ...

<?xml version="1.0" encoding="UTF-8"?>
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <!--
    <appender name="CHAINSAW_APPENDER"
            class="org.apache.log4j.net.SocketAppender">
        <param name="RemoteHost" value="localhost" />
        <param name="Port" value="4445" />
        <param name="LocationInfo" value="true"/>
        <param name="ReconnectionDelay" value="10000"/>
    </appender>
    -->

    <appender name="FILE_APPENDER"
        class="org.apache.log4j.RollingFileAppender">
        <param name="File" value="c:/dev/logs/OSB.log" />
        <param name="Append" value="true" />
         <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p [[[[%c]]]] (((%F:%L))) ___%C___ - %m%n"/>
            </layout>
    </appender>

    <logger name="org.apache">
        <level value="WARN"/>
    </logger>

    <!--
    <logger name="com.conciliarpress.webapp.filter.GZIPFilte">
        <level value="WARN"/>
    </logger>

    <logger name="com.conciliarpress">
        <level value="DEBUG"/>
    </logger>

    <logger name="BibleFormControllerTest">
        <level value="DEBUG"/>
    </logger>

    <logger name="com.conciliarpress.webapp.action.sample.jmesa.JMesaSampleController">
        <level value="DEBUG"/>
    </logger>

    <logger name="com.conciliarpress.webapp.action.binding">
        <level value="DEBUG"/>
    </logger>

    <logger name="org.springframework.web.servlet.mvc">
        <level value="DEBUG"/>
    </logger>

    <logger name="org.directwebremoting">
        <level value="DEBUG"/>
    </logger>

    <logger name="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <level value="DEBUG"/>
    </logger>

    -->

    <logger name="com.conciliarpress.dao.hibernate">
        <level value="DEBUG"/>
    </logger>

    <logger name="com.conciliarpress.service.impl">
        <level value="DEBUG"/>
    </logger>

    <logger name="com.conciliarpress.service.dwr">
        <level value="DEBUG"/>
    </logger>

    <logger name="com.conciliarpress.webapp.action">
        <level value="DEBUG" />
    </logger>

    <root>
        <level value="WARN" />
        <appender-ref ref="FILE_APPENDER"/>
    </root>

</log4j:configuration>

또한 해당 전기 톱 구성 파일이 있습니다.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd"> 
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true">
   <plugin name="logFileReceiver" class="org.apache.log4j.varia.LogFilePatternReceiver">
     <param name="fileURL" value="file:///c:/dev/logs/OSB.log" />
     <param name="timestampFormat" value="yyyy-MM-d HH:mm:ss,SSS"/> 
     <param name="logFormat" value="TIMESTAMP [THREAD] LEVEL [[[[LOGGER]]]] (((FILE:LINE))) ___CLASS___ - MESSAGE"/> 
     <param name="name" value="DLA_M_LogFile" />
     <param name="tailing" value="true" /> 
   </plugin>

   <root>
      <level value="debug"/>
   </root>
</log4j:configuration>

또한 후자 파일을 해독하는 데 도움이 될 수있는 몇 가지 정보가 있습니다.http://wiki.apache.org/logging-log4j/configuring_a_log4j_rollingfileappender_with_chainsaw

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top