Log4j无法打印到控制台

时间:2018-02-03 19:08:39

标签: java logging log4j2

我将log4j的依赖项放在pom.xml文件中:

<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

并将此文件放在'resources'文件夹下。

最后,我把环境变量LOG4J_log4j.configurationFile = log4j.properties

但是,当我运行我的应用程序时,行:

logger.info("Hello");

不会向控制台写任何内容。 你知道可能是什么问题吗?

2 个答案:

答案 0 :(得分:3)

您使用的是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

source = https://springframework.guru/log4j-2-configuration-using-properties-file/

答案 1 :(得分:1)

我建议您首先从一个工作示例开始,然后逐步添加您自己配置的细节。然后你会看到它在哪里破碎。

在上面的代码中,我看到了以下潜在问题:

  • 你指的是“log4j.rootLogger = INFO,stdout,console” 一个名为“console”的appender,未定义。这可能会抛出一个 内部异常,从未在任何地方记录,因为记录本身因此而无法正常工作。
  • 您通过配置配置文件位置的方法 环境变量似乎没有在任何地方记录。你在哪里有这个。如果文件是 在资源目录中,正如你所说,它将最终在根目录 类路径。如果是这样,可以按照此处的描述指出:Where is the correct location to put Log4j.properties in an Eclipse project?,即在启动JVM时添加命令行开关-Dlog4j.configuration=file:log4j.properties
  • log4j.properties文件的格式与您正在使用的log4j的版本可能存在冲突。属性文件似乎属于log4j,而您的Maven工件属于log4j2。