Weld-SE не регистрируется с log4j2
Я использую Weld-SE и Log4j2 для регистратора. Но я ничего не могу получить от Weld. Другие записи отлично работает.
Библиотеки:
<dependency>
<groupId>org.jboss.weld.se</groupId>
<artifactId>weld-se-core</artifactId>
<version>2.2.4.Final</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.0.2</version>
</dependency>
log4j2.xml
<Configuration status="INFO">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<logger name="org.jboss.weld.level" level="debug"/>
<Root level="debug">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
Спасибо за совет.
1 ответ
Решение
Попробуйте использовать реализацию SLF4J для Log4j 2:
<dependency>
<groupId>org.jboss.weld.se</groupId>
<artifactId>weld-se-core</artifactId>
<version>2.2.4.Final</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.0.2</version>
</dependency>
JBoss Weld использовать класс org.jboss.logging.LoggerProviders
найти провайдера регистрации. Если вы видите код этого класса, вы увидите, что ищет системное свойство, org.jboss.logging.provider
,
Вы можете добавить к JVM аргументы или вы можете эмулировать его. например:
public class App {
static {
System.setProperty("org.jboss.logging.provider", "slf4j");
}
public static void main(String[] args) {
Weld weld = new Weld();
WeldContainer container = weld.initialize();
// Do something
weld.shutdown();
}
}