2013-08-13 2 views
5

파일에 저장하기 위해 stout을 구성하려고합니다. 그러나 파일에 저장되지 않습니다. 이유는 무엇입니까? 또한 - logback.xml 내에서 로그 파일 이름을 구성 할 수 있기를 원합니다. {LOG_FILE_NAME}이 (가) cmd에서 올 수 있습니다. 가능합니까?Logback.xml 구성

이 내 logback.xml이다 : 첫 번째 답변

<?xml version="1.0" encoding="UTF-8"?> 

<!-- For assistance related to logback-translator or configuration --> 
<!-- files in general, please contact the logback user mailing list --> 
<!-- at http://www.qos.ch/mailman/listinfo/logback-user    --> 
<!--                --> 
<!-- For professional support please see       --> 
<!-- http://www.qos.ch/shop/products/professionalSupport   --> 
<!--                --> 
<configuration> 
    <appender name="defaultLog" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <!--See also http://logback.qos.ch/manual/appenders.html#RollingFileAppender--> 
    <File>sarit_test.log</File> 
    <encoder> 
     <pattern>%d{dd MMM yyyy HH:mm:ss.SSS} [%t] %-5p %x %F:%L - %m</pattern> 
    </encoder> 
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"/> 
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> 
     <MaxFileSize>50000KB</MaxFileSize> 
    </triggeringPolicy> 
    </appender> 
    <root level="INFO"> 
    <appender-ref ref="defaultLog"/> 
    </root> 
</configuration> 

답변

2

, 여기 확인 : https://github.com/abdulwaheed18/Slf4jTutorial

두 번째 답변 : 당신은 파일 시스템 매개 변수를 사용하는 펜더를 SIFT 사용해야합니다. 또한 시스템 레벨에서 이러한 속성을 설정할 수 있습니다

java -DUSER_HOME="/home/sebastien" MyApp2 

:

<appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender"> 
    <!-- in the absence of the class attribute, it is assumed that the desired 
     discriminator type is ch.qos.logback.classic.sift.MDCBasedDiscriminator --> 
    <discriminator> 
     <key>FILE_NAME</key> 
     <defaultValue>DEFAULT_FILE_NAME</defaultValue> 
    </discriminator> 
    <sift> 
     <appender name="FILE-${FILE_NAME}" 
      class="ch.qos.logback.core.rolling.RollingFileAppender"> 
      <filter class="ch.qos.logback.core.filter.EvaluatorFilter"> 
       <evaluator> <!-- defaults to type ch.qos.logback.classic.boolex.JaninoEventEvaluator --> 
        <expression>return message.contains("Broken pipe");</expression> 
       </evaluator> 
       <OnMismatch>NEUTRAL</OnMismatch> 
       <OnMatch>DENY</OnMatch> 
      </filter> 
      <File>${LOGDIR}/${FILE_NAME}.log</File> 
      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
       <FileNamePattern>${LOGDIR}/${FILE_NAME}.%d{yyyy-MM-dd}.%i.log.gz 
       </FileNamePattern> <!-- keep 30 days' worth of history --> 
       <MaxHistory>30</MaxHistory> 
       <!-- Limit all logs size to 300MB --> 
       <timeBasedFileNamingAndTriggeringPolicy 
        class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 
        <!-- or whenever the file size reaches 10MB --> 
        <maxFileSize>10MB</maxFileSize> 
       </timeBasedFileNamingAndTriggeringPolicy> 
      </rollingPolicy> 
      <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 
       <Pattern>%date [%thread] %-5level %logger{36} - %msg%n</Pattern> 
      </encoder> 
     </appender> 
    </sift> 
</appender> 
1

속성은 같은 명령 줄에서 설정할 수 있습니다. LogBack은 먼저 구성 등록 정보를 확인한 다음 Java 시스템 등록 정보에서 확인한 다음 시스템 등록 정보에서 확인합니다.

를 사용하여 다음과 같은 구성은 콘솔과 파일에 STDOUT 쓰기 :

<configuration> 

    <!-- LOG_FILE_NAME: Java system properties set on the command line --> 
    <!-- LOG_HOME: Set at this line below --> 
    <property name="LOG_HOME" value="/home/sebastien" /> 

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
     <encoder> 
      <pattern>%date %-5level [%thread] - [%logger]- %msg%n</pattern> 
     </encoder> 
    </appender> 

    <appender name="FILE" class="ch.qos.logback.core.FileAppender"> 
     <file>${LOG_HOME}/${LOG_FILE_NAME}</file> 
     <encoder> 
      <pattern>%date %-5level [%thread] - [%logger] - %msg%n</pattern> 
     </encoder> 
    </appender> 


    <root level="WARN"> 
     <appender-ref ref="STDOUT" /> 
     <appender-ref ref="FILE" /> 
    </root> 
</configuration> 
1

ooghh을! (hommer simpson) 왜 대문자로 파일을 사용 했습니까 !!

<File>sarit_test.log</File> 

그것은이 당신이 당신의 질문에 오류 메시지를 추가하려고 (mybe이 도움이!)를 해결하기 위해 시도하고 다음 번에 만든 실수 중 하나였다

<file>sarit_test.log</file> 

해야한다.

1

내가 곧바로 볼 수있는 한 가지는 <rollingPolicy> 만 열었지만 정책 자체는 비어 있습니다. 나는 그것이 몇 가지 문제를 만든다고 생각한다.

질문의 두 번째 부분은 가능합니다. 가장 간단한 방법은 응용 프로그램의 클래스에서 값을 설정할 "상수"를 정의하는 것입니다.

logback.xml을 수정하여 위의 두 가지 제안을 통합했습니다. 지금은 1 살이지만, 비슷한 문제를 찾는 다른 사람들에게도 유용 할 수 있습니다.

<configuration> 
    <define name="logPath" class="path.to.your.Class.with.public.method.getLogPath"> 
    <key>getLogPath</key> 
    </define> 

    <appender name="defaultLog" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <!--See also http://logback.qos.ch/manual/appenders.html#RollingFileAppender--> 
    <File>${logPath}${file.separator}sarit_test.log</File> 
    <encoder> 
     <pattern>%d{dd MMM yyyy HH:mm:ss.SSS} [%t] %-5p %x %F:%L - %m</pattern> 
    </encoder> 
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"/> 
     <fileNamePattern>${logPath}${file.separator}sarit_test.log.%i.zip</fileNamePattern> 
     <minIndex>1</minIndex> 
     <maxIndex>5</maxIndex> 
    </rollingPolicy> 
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> 
     <MaxFileSize>50000KB</MaxFileSize> 
    </triggeringPolicy> 
    </appender> 
    <root level="INFO"> 
    <appender-ref ref="defaultLog"/> 
    </root> 
</configuration>  
관련 문제