के लिए लॉगबैक सिस्टम को रोकना मैं हाल ही में logback के साथ प्रयोग कर रहा हूं और सीधे ग्रहण के अंदर से उदाहरण चला रहा हूं। जब मैं ऐसा करता हूं, तो मुझे लगता है कि - मेरे स्थिर main(String[] args)
विधि समाप्त होने के बाद भी (मेरे जावा ड्राइवर वर्ग के अंदर से), एप्लिकेशन चल रहा रहता है।क्लीन शटडाउन
मैंने अंततः यह पता लगाया कि लॉगबैक अपने मुख्य अनुप्रयोगों के बाहर होने के बावजूद जीवित रहने वाले अपने धागे का प्रबंधन कर रहा है। मैं कुछ समाधान के लिए आसपास googled और स्पष्ट रूप से जावा अंदर से Logback नीचे बंद करने का एक तरीका के रूप में इस पाया:
ILoggerFactory factory = LoggerFactory.getILoggerFactory();
if(factory instanceof LoggerContext) {
LoggerContext ctx = (LoggerContext)factory;
ctx.stop();
}
यह वास्तव में logback सफाई से नीचे बंद के लिए एक ही रास्ता है? मुझे कभी भी लॉगिंग सिस्टम (जेयूएल, जेसीएल, लॉग 4 जे इत्यादि) का सामना नहीं हुआ है जो आपको अपने आवेदन से बाहर निकलने के लिए स्पष्ट रूप से बंद कर देता है ...
अग्रिम धन्यवाद!
अद्यतन: यहाँ logback.xml
है:
<configuration debug="true" scan="true" scanPeriod="5 minutes">
<appender name="logManager-consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>TRACE</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>NEUTRAL</onMismatch>
</filter>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="logManager-smtpAppender" class="ch.qos.logback.classic.net.SMTPAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>NEUTRAL</onMismatch>
</filter>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<smtpHost>my.smtp.host</smtpHost>
<to>[email protected]</to>
<from>[email protected]</from>
<username>my_user</username>
<password>my_password</password>
<subject>%logger{20} - %m</subject>
<layout class="ch.qos.logback.classic.html.HTMLLayout"/>
<cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker">
<bufferSize>5</bufferSize>
</cyclicBufferTracker>
</appender>
<root level="ALL">
<appender-ref ref="logManager-consoleAppender" />
<appender-ref ref="logManager-smtpAppender" />
</root>
</configuration>
का उपयोग logback-1.0.13 और JDK 1.6u34।
आपकी logback.xml फ़ाइल कैसी दिखती है? आप किस लॉगबैक का उपयोग कर रहे हैं? कौन सा जेडीके? – Ceki
धन्यवाद @Ceki (+1) - कृपया अपने सभी सवालों के जवाब के लिए मेरे अपडेट देखें। – IAmYourFaja
SMTPAsynchronous को SMTPAppender में झूठ बोलने के लिए सेट करें और देखें कि इससे कोई फर्क पड़ता है: http://logback.qos.ch/manual/appenders.html#smtpAsynchronousSending – Ceki