java - Log4j : how to compose config?

标签 java log4j2

我将Log4j2添加到项目中,并添加了配置。

# Root logger option
log4j.rootLogger=INFO, file, stdout

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\logging.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Direct log messages to stdout
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

然后,我记录如下代码:

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

...

final static Logger logger = LogManager.getLogger(AbstractEditor.class);

...

logger.info("updated: " + entity);
logger.debug("==> debug");
logger.info("==> info");
logger.warn("==> warn");
logger.error("==> error");
logger.fatal("==> fatal");
logger.trace("==> trace");

据我了解,所有级别高于DEBUG的日志都必须写入控制台和文件。但只有这个被打印到控制台:

15:08:52.285 [http-nio-8080-exec-1] ERROR ru.example.AbstractEditor - ==> error
15:08:52.292 [http-nio-8080-exec-1] FATAL ru.example.AbstractEditor - ==> fatal

我看到这个字符串与我的配置不匹配。而且它们没有被写入文件。当我添加此配置时,所有日志都从控制台消失,不包括这 2 个字符串。

请帮助编写配置,以在控制台和文件上查看具有 DEBUG 级别的所有日志。

最佳答案

您正在以编程方式使用 Log4j 2,但使用 Log4j 1 的配置格式。Log4j 2 会忽略您的配置并使用默认配置。你有2个选择。

  1. 将您的配置转换为使用 Log4j 2 语法(推荐),或者
  2. 通过设置系统属性“log4j1.compatibility=true”启用 Log4j 2 对 log4j 1 配置文件的实验性支持。此支持是在 2.13.0 版本中添加的,因此您必须使用该版本。属性文件还必须命名为 log4j.properties,而不是 log4j2.properties。

关于java - Log4j : how to compose config?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59681652/

相关文章:

java - 在发布新帖子之前向用户提供类似帖子的功能的逻辑是什么?

javascript - 通过一个请求在 javascript 中接收多个响应

java - Log4j2-JDBC Appender

java - 为 log4j 添加微秒级

java - 为什么泛型方法更改了赋值中的参数化类型?

java - 是否有等效于 ChronoUnit.between 的返回分数而不是整数?

java - 如何将 log4j 配置设置为项目的依赖项?

java - log4j2:TimeBasedTriggeringPolicy 未触发文件翻转

java - BigDecimal 方法发送格式化数字

java - 我如何使用 log4j2 为不同的类使用不同的日志记录级别?