2013-07-31 9 views
30

के लिए टॉमकैट होम डीआईआर के सापेक्ष पथ निर्दिष्ट करें मैं अपने टॉमकैट सर्वर को स्थानीय रूप से चलने के लिए log4j2 कॉन्फ़िगर करने का प्रयास कर रहा हूं। मैं लॉग्स को उस स्थान पर पाइप करने में असमर्थ हूं जो टॉमकैट इंस्टॉल से संबंधित है।log4j2 फ़ाइल एपेंडर

यदि मैं एक पूर्ण पथ निर्दिष्ट करता हूं तो यह काम करता है। यदि मैं एक सापेक्ष पथ का उपयोग करता हूं तो यह System.getProperty("user.dir") के स्थान पर आउटपुट करता है।

लेकिन जब मैं ${catalina.home} या ${catalina.base} का उपयोग करने का प्रयास करता हूं तो यह काम नहीं करता है। अगर मैं स्टार्टअप पर उन दो सिस्टम गुणों को आउटपुट करता हूं, तो उन्हें परिभाषित किया जाता है और उचित स्थान पर इंगित किया जाता है।

इसके अलावा,

  • बिलाव 7.0.26
  • सर्वलेट 2.5
  • log4j2.0 बीटा इसके पीछे log4j2 साथ slf4j 8
  • हम प्रयोग कर रहे हैं।
  • मैं पर्यावरण परिवर्तक -DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector के माध्यम से सभी लॉगर्स एसिंक होने के लिए सेटअप करता हूं।

मेरी भावना यह है कि जब यह log4j2.xml को संसाधित करता है तो टोमकैट पूरी तरह से प्रारंभ नहीं हो सकता है? किसी भी विचार की बहुत प्रशंसा की जाएगी!

यहाँ मेरी log4j2.xml है:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration status="debug" name="LoggingConfig"> 
    <appenders> 
    <FastFile name="ALog" fileName="${catalina.home}/logs/test.log" immediateFlush="true" append="true"> 
     <PatternLayout> 
     <pattern>%d %p %c{1.} [%t] %m%n</pattern> 
     </PatternLayout> 
    </FastFile> 
    </appenders> 

    <loggers> 
    <logger name="a.namespace.dir" level="info" additivity="false"> 
     <appender-ref ref="ALog"/> 
    </logger> 

    <root level="info"> 
     <appender-ref ref="ALog"/> 
    </root> 
    </loggers> 

</configuration> 

से catalina.out

2013-07-31 11:22:00,313 DEBUG Calling createAppender on class org.apache.logging.log4j.core.appender.FastFileAppender for element FastFile with params(fileName="${catalina.home}/logs/test.log", append="true", name="ALog", immediateFlush="true", suppressExceptions="null", PatternLayout(%d %p %c{1.} [%t] %m%n), null, advertise="null", advertiseURI="null", Configuration(LoggingConfig)) 

2013-07-31 11:22:00,315 DEBUG Starting FastFileManager ${catalina.home}/logs/test.log 

2013-07-31 11:22:00,316 DEBUG Calling createAppenders on class org.apache.logging.log4j.core.config.plugins.AppendersPlugin for element appenders with params(appenders={ALog}) 

2013-07-31 11:22:00,317 DEBUG Generated plugins in 0.000016000 seconds 

2013-07-31 11:22:00,318 DEBUG Calling createAppenderRef on class org.apache.logging.log4j.core.config.AppenderRef for element appender-ref with params(ref="ALog", level="null", null) 

2013-07-31 11:22:00,320 DEBUG Calling createLogger on class org.apache.logging.log4j.core.config.LoggerConfig for element logger with params(additivity="false", level="info", name="a.namespace.dir", includeLocation="null", appender-ref={[email protected]}, properties={}, Configuration(LoggingConfig), null) 

2013-07-31 11:22:00,321 DEBUG Calling createAppenderRef on class org.apache.logging.log4j.core.config.AppenderRef for element appender-ref with params(ref="ALog", level="null", null) 

2013-07-31 11:22:00,322 DEBUG Calling createLogger on class org.apache.logging.log4j.core.config.LoggerConfig$RootLogger for element root with params(additivity="null", level="info", includeLocation="null", appender-ref={[email protected]}, properties={}, Configuration(LoggingConfig), null) 

2013-07-31 11:22:00,323 DEBUG Calling createLoggers on class org.apache.logging.log4j.core.config.plugins.LoggersPlugin for element loggers with params(loggers={a.namespace.dir, root}) 

उत्तर

90

मैं अपने ही समस्या हल हो जाती। सिस्टम गुणों के लिए आपको sys: के साथ चर को उपसर्ग करने की आवश्यकता है।

<FastFile name="ALog" fileName="${sys:catalina.home}/logs/test.log" immediateFlush="true" append="true"> 
    <PatternLayout> 
    <pattern>%d %p %c{1.} [%t] %m%n</pattern> 
    </PatternLayout> 
</FastFile> 

प्रलेखन के इस हिस्से को फिर से पढ़ने के बाद यह मिला: कई घंटे http://logging.apache.org/log4j/2.x/manual/configuration.html#PropertySubstitution

+3

+1 दस्तावेज़ के लिए +1 हालांकि आपको अपना उत्तर मिला। कम से कम मेरी मदद की। –

+1

'catalina.base' यूनिक्स सिस्टम के लिए अधिक उपयुक्त लगता है क्योंकि यह'/usr/bin' के बजाय '/ var/lib' को इंगित करता है। – BrunoJCM

+0

धन्यवाद यह सिर्फ सही जगह पर था। –

0

बाद बिलाव के साथ log4j2 फ़ाइल लॉगिंग के साथ अपने खुद के मुद्दों को हल करने की कोशिश कर रहा एक और संभावित कारण मिल गया। उम्मीद है कि यह सड़क के नीचे कुछ और बचाता है!

मेरे पास /Library/Tomcat में स्थित मेरी टोमकैट निर्देशिका थी। बुद्धि के अंत में, मैंने टॉमकैट को पुनर्स्थापित करने का प्रयास किया, इस बार /usr/local में /Library/Tomcat पर सिम्लिंक के साथ कार्यशील निर्देशिका को रखकर। यह, sys उपसर्ग सहित Moemars के सुझाव के साथ मेरे लॉगिंग मुद्दों को हल किया।

संबंधित मुद्दे