2013-08-13 4 views
5

मैं एक फ़ाइल में सहेजने के लिए स्टउट को कॉन्फ़िगर करने का प्रयास कर रहा हूं। हालांकि, यह फ़ाइल में सहेजा नहीं गया है - क्या आपको कोई विचार है क्यों? भी - मुझे लॉग फ़ाइल नाम लॉगबैक.एक्सएमएल के अंदर कॉन्फ़िगर करने योग्य होगा जैसे {LOG_FILE_NAME} जो cmd से आएगा - क्या यह संभव है?लॉगबैक.एक्सएमएल कॉन्फ़िगरेशन

यह मेरा 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

दूसरा उत्तर: आप फ़ाइल के लिए प्रणाली मापदंडों लेने के लिए appender झारना उपयोग करना होगा।

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

गुण कमांड लाइन की तरह पर सेट किया जा सकता है। लॉगबैक पहले कॉन्फ़िगरेशन-गुणों को देखेंगे, फिर जावा सिस्टम गुणों पर, फिर सिस्टम गुणों पर। सांत्वना और एक फ़ाइल को 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 !! (होमर सिम्पसन) आपने पूंजी अक्षरों में फ़ाइल का उपयोग क्यों किया !!

<File>sarit_test.log</File> 

यह

<file>sarit_test.log</file> 

होना चाहिए इस गलतियों आपके द्वारा किए गए, (mybe यह मदद करता है!) और आपके सवालों में त्रुटि संदेश जोड़ने की कोशिश यह ठीक करने की कोशिश अगली बार से एक था।

1

एक चीज़ जो मैं सीधे देखता हूं वह यह है कि आपने केवल <rollingPolicy> खोला है लेकिन नीति स्वयं खाली है। मैं शर्त लगाता हूं कि कुछ समस्याएं पैदा होती हैं।

आपके प्रश्न के दूसरे भाग के लिए, हाँ, यह संभव है और सबसे आसान तरीका शायद "स्थिर" को परिभाषित करने के लिए है, जिसका मूल्य आपके आवेदन में एक वर्ग द्वारा निर्धारित किया जाएगा।

मैंने ऊपर दिए गए दोनों सुझावों को शामिल करने के लिए आपके logback.xml को फिर से काम किया है। मुझे एहसास है कि यह अब एक साल पुराना है, लेकिन यह अभी भी अन्य लोगों के लिए समान समस्याएं तलाशने के लिए उपयोगी हो सकता है।

<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>  
संबंधित मुद्दे