Log4j不会打印到控制台。

3
我在pom.xml文件中添加了log4j的依赖:
<dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.10.0</version>
        </dependency>

我写了以下的log4j.properties文件:

log4j.rootLogger=INFO, stdout, console log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

并将该文件放在“资源”文件夹下。

最后,我将环境变量LOG4J_log4j.configurationFile = log4j.properties设置好。

然而,当我运行我的应用程序时,出现了以下这行:

logger.info("Hello");

不会在控制台上输出任何内容。你知道可能是什么问题吗?

2个回答

11
你正在使用log4j2,你的属性文件名应该是log4j2.properties。 你可以像下面这样进行配置。 你不需要设置任何环境变量。
appenders = console
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n 

rootLogger.level = debug
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT

源代码 = https://springframework.guru/log4j-2-configuration-using-properties-file/


1
我建议你先从一个可工作的示例开始,然后逐步添加自己配置的具体内容。这样你就能看到问题出在哪里了。
在你上面的代码中,我看到以下潜在问题:
  • 在"log4j.rootLogger=INFO, stdout, console"这一行中,您提到了一个名为"console"的appender,但它没有被定义。这可能会导致内部抛出异常,因为由于日志本身不起作用,所以从未在任何地方记录日志。
  • 通过环境变量配置配置文件位置的方法似乎没有任何文档记录。您是从哪里得到这个方法的?如果文件在资源目录中,如您所说,它将位于类路径的根目录下。如果是这样,可以按照这里描述的方式指向它:在Eclipse项目中放置Log4j.properties文件的正确位置在哪里?,即在启动JVM时添加命令行开关-Dlog4j.configuration=file:log4j.properties
  • 日志属性文件的格式和您使用的log4j版本可能存在冲突。属性文件似乎属于log4j,而您的Maven构件引用的是log4j2。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接