2013-08-13 10 views
5

Bir dosyaya kaydetmek için stout'u yapılandırmaya çalışıyorum. Ancak, bir dosyaya kaydedilmez - neden bir fikriniz var mı? Ayrıca - log dosyası isminin logdey.xml içerisinde yapılandırılabilmesini istiyorum, çünkü cmd'den gelen {LOG_FILE_NAME} gibi bir şey mümkün mü?Logback.xml yapılandırma

Bu benim logback.xml: ilk yanıt için

<?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> 

cevap

2

, burada kontrol edin: https://github.com/abdulwaheed18/Slf4jTutorial

İkinci Cevap: Dosya için sistem parametrelerini almaya appender ELEMEK kullanmak zorunda. Ayrıca sistem düzeyinde bu özellikleri ayarlayabilirsiniz

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

Özellikleri gibi komut satırına ayarlanabilir. LogBack önce konfigürasyon özelliklerine, sonra java sistem propertlerine, daha sonra sistem özelliklerine bakacaktır.

kullanın aşağıdaki yapılandırma konsolu ve Dosyaya STDOUT yazmak için:

<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) neden büyük harfle dosya kullandınız !!

<File>sarit_test.log</File> 

bu sorularınızın hata iletisi eklemeyi deneyin (mybe yardımcı olur!) Bunu düzeltmek için denemek ve bir dahaki sefere, yapılan hatalardan biriydi

<file>sarit_test.log</file> 

olmalıdır.

1

Doğrudan göründüğüm bir şey, yalnızca <rollingPolicy>'u açmış olmanızdır, ancak ilkenin kendisi boştur. Bahse girerim bazı problemler yaratır.

Sorunuzun ikinci kısmı için, evet, bu mümkün ve en basit yol muhtemelen bir "sabit" değerini tanımlamanızın değeri, uygulamanızda bir sınıf tarafından ayarlanacak.

Yukarıdaki iki öneriyi de dahil etmek için logback.xml dosyanızı yeniden çalıştırdım. Bunun bir yaşında olduğunu anlıyorum, ama benzer sorunlar arayan diğer insanlar için hala yararlı olabilir.

<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>  
İlgili konular