У меня есть приложение Java EE, которое состоит из пакетов EAR, WAR и EJB.
Я настроил logback
, определив метод @Produces
в классе EJB, например:
import org.slf4j.LoggerFactory;
import org.slf4j.Logger;
@Named
@Singleton
public class LoggerProducer {
@Produces
public Logger produceLogger(InjectionPoint injectionPoint) {
return LoggerFactory.getLogger(injectionPoint.getMember()
.getDeclaringClass().getName());
}
}
Это работает нормально, вводит интерфейс с
@Inject
private Logger logger;
и регистрируется с
logger.error("This is the error");
У меня есть эти зависимости в моем pom.xml
:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
Теперь я пытаюсь включить файл logback.xml
в развертывание, я добавил его в путь к классам EJB:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
</Pattern>
</layout>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
</configuration>
Но он не работает, он регистрируется со стандартным /формат по умолчанию.
Я добавил следующий файл jboss-deployment-structure.xml
в папку EJB / META-INF, чтобы исключить ведение журнала:
<jboss-deployment-structure>
<deployment>
<exclude-subsystems>
<subsystem name="logging"/>
</exclude-subsystems>
</deployment>
</jboss-deployment-structure>
Но он тоже не работает.Если я добавлю jboss-deployment-structure.xml
в EAR / META-INF, при запуске я получу следующую ошибку (указывающую только на классы WAR):
org.jboss.weld.exceptions.DeploymentException: WELD-001408: Неудовлетворенные зависимости для типа Logger с квалификаторами @ По умолчанию
Где разместить файл logback.xml
?Как настроить файл jboss-deployment-structure.xml
и куда его поместить?