最近私はlogbackを実験していて、Eclipseの中から直接サンプルを実行しています。私がこれを行うと、私の静的なmain(String[] args)
メソッドが終了しても(私のJavaドライバクラスの中から)、アプリケーションは実行を続けます。クリーンシャットダウンのためのLogbackシステムの停止
Logbackは、主なアプリケーションが終了しても自分のスレッドを管理していることを最終的に確かめました。私はいくつかの解決策の周りGoogleで検索して明示的にJavaの内部からLogbackをシャットダウンする方法として、これを見つけた:
ILoggerFactory factory = LoggerFactory.getILoggerFactory();
if(factory instanceof LoggerContext) {
LoggerContext ctx = (LoggerContext)factory;
ctx.stop();
}
は、これは本当にきれいlogbackをシャットダウンする唯一の方法ですか?私はアプリケーションを正常に終了させるために明示的にシャットダウンするログシステム(JUL、JCL、log4jなど)に遭遇したことはありません。
ありがとうございます!
更新は:ここにlogback.xml
次のとおりです。logback-1.0.13およびJDK 1.6u34を使用して
<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.xmlファイルの外観は?どのバージョンのログバックを使用していますか?どのJDK? – Ceki
@Ceki(+1)ありがとうございました。あなたのすべての質問に対する回答は、私のアップデートをご覧ください。 – IAmYourFaja
SMTPAppenderのsmtpAsynchronousSendingをfalseに設定し、違いがあるかどうかを確認します。http://logback.qos.ch/manual/appenders.html#smtpAsynchronousSending – Ceki