Java.util.logging.Logger
への通常の呼び出しを行い、SLF4Jを使用してLogbackにルーティングすることは可能ですか?古いjulコードを1行ずつリファクタリングする必要がないので、これは素晴らしいことです。
EG、この行があるとしましょう:
private static Logger logger = Logger.getLogger(MahClass.class.getName());
//...
logger.info("blah blah blah");
SLF4Jを介して呼び出すようにこれを構成するとよいでしょう。
これは非常に簡単で、パフォーマンスの問題ではなくなりました。
SLF4Jマニュアル に記載されている2つの方法があります。 Javadocs にも正確な例があります
Jul-to-slf4j.jarをクラスパスに追加します。またはMavenの依存関係を介して:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>1.7.0</version>
</dependency>
Logging.properties(Java.util.loggingの場合)がない場合は、これをbootstrapコード:
SLF4JBridgeHandler.removeHandlersForRootLogger();
SLF4JBridgeHandler.install();
Logging.propertiesがある(そしてそれを保持したい)場合は、これを追加します。
handlers = org.slf4j.bridge.SLF4JBridgeHandler
パフォーマンスの低下を回避するために、このcontextListenerをlogback.xmlに追加します(ログバックバージョン0.9.25以降)。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
<!-- reset all previous level configurations of all j.u.l. loggers -->
<resetJUL>true</resetJUL>
</contextListener>
...
</configuration>