https://github.com/jboss-logging/jboss-logging/blob/master/src/main/java/org/jboss/logging/LoggerProviders.javaを見てください:
static final String LOGGING_PROVIDER_KEY = "org.jboss.logging.provider";
private static LoggerProvider findProvider() {
// Since the impl classes refer to the back-end frameworks directly, if this classloader can't find the target
// log classes, then it doesn't really matter if they're possibly available from the TCCL because we won't be
// able to find it anyway
final ClassLoader cl = LoggerProviders.class.getClassLoader();
try {
// Check the system property
final String loggerProvider = AccessController.doPrivileged(new PrivilegedAction<String>() {
public String run() {
return System.getProperty(LOGGING_PROVIDER_KEY);
}
});
if (loggerProvider != null) {
if ("jboss".equalsIgnoreCase(loggerProvider)) {
return tryJBossLogManager(cl);
} else if ("jdk".equalsIgnoreCase(loggerProvider)) {
return tryJDK();
} else if ("log4j".equalsIgnoreCase(loggerProvider)) {
return tryLog4j(cl);
} else if ("slf4j".equalsIgnoreCase(loggerProvider)) {
return trySlf4j();
}
}
} catch (Throwable t) {
}
try {
return tryJBossLogManager(cl);
} catch (Throwable t) {
// nope...
}
try {
return tryLog4j(cl);
} catch (Throwable t) {
// nope...
}
try {
// only use slf4j if Logback is in use
Class.forName("ch.qos.logback.classic.Logger", false, cl);
return trySlf4j();
} catch (Throwable t) {
// nope...
}
return tryJDK();
}
だから、のための可能な値はorg.jboss.logging.provider
以下のとおりですjboss
、jdk
、log4j
、slf4j
。
設定しない場合 org.jboss.logging.provider
、jboss、log4j、slf4j(logbackが使用されている場合のみ)、jdkへのフォールバックが試行されます。
私はslf4j
と一緒に使用しlogback-classic
ます:
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.0.13</version>
<scope>${logging.scope}</scope>
</dependency>
そして、すべてうまくいきます!
UPDATE一部のユーザーは、非常にメインのApp.javaで使用します。
static { //runs when the main class is loaded.
System.setProperty("org.jboss.logging.provider", "slf4j");
}
しかし、コンテナベースのソリューションの場合、これは機能しません。
UPDATE 2 Log4jをSLF4Jで管理していると考える人は、必ずしもそうjboss-logging
ではありません。jboss-logging
SLF4JなしでLog4jを直接使用します!