我正在尝试在我的自动化框架项目的控制台中获取日志输出。 我尝试使用不同的设置、依赖项和方法来做到这一点。
我正在使用java + maven + selenide。
我为 log4j 2 添加了这些依赖项
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.20.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.20.0</version>
</dependency>
我创建了这个log4j2.properties文件:
# configuration syntax
status=error
dest=err
name=PropertiesConfig
# publish console logs
appender.console.type=Console
appender.console.name=STDOUT
appender.console.layout.type=PatternLayout
appender.console.layout.pattern=[%-5level] %d{DEFAULT} %c:%L - %m%n
# capture logs
logger.app.name=base
logger.app.level=debug
logger.app.additivity=false
logger.app.appenderRef.console.ref=STDOUT
# root logger
rootLogger.level=info
rootLogger.appenderRef.stdout.ref=STDOUT
我在 BaseTest.class 中创建了一个 Logger 实例
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
protected static Logger log = LogManager.getLogger();
现在我正在尝试通过控制台获取我的日志
log.info("some string")
在测试方法中。
但是没有与 log4j 2 相关的输出,并且控制台中没有与 log4j 2 相关的错误消息。
这可能是什么原因?
您使用什么应用程序服务器? Wildfly 使用 JBoss 日志记录,而 JBoss 日志记录又使用 slf4j。您必须提供 log4j-slf4j 作为绑定库才能使用 log4j2 进行日志记录。
尝试添加此依赖项:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</dependency>
根据您的实际设置,您可能还需要
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</dependency>