我正在学习在我的应用程序中使用 log4j2。为此,我添加了一个附加程序和带有格式说明符的模式布局。但是,输出不符合规范。甚至 INFO 级别的语句也没有被打印。 代码:
public static void main(String[] args) {
ConfigurationBuilder<BuiltConfiguration> builder=ConfigurationBuilderFactory.newConfigurationBuilder();
AppenderComponentBuilder appenderBuilder = builder.newAppender("Stdout", "CONSOLE");
appenderBuilder.add(builder.newLayout("PatternLayout").addAttribute("pattern", "[%c{1}] %m\\n"));
builder.add(appenderBuilder);
Logger logger = LogManager.getLogger();
logger.log(Level.INFO, "This is a first Info log");
logger.log(Level.INFO, "This is a second Info log");
logger.log(Level.ERROR, "This is a first Error log");
logger.log(Level.FATAL, "This is a first fatal log");
}
我面临的问题是:
- 日志输出不遵循我指定的模式。我有 尝试更改图案,但仍然以相同的格式打印。
- 我添加了四个日志记录语句,其中仅打印了两个(ERROR 和 FATAL)。
输出:
Logging output for pattern ("%m\\n"):
14:42:06.046 [main] ERROR loghelper.log4j.Log2Helper - This is a first Error log
14:42:06.049 [main] FATAL loghelper.log4j.Log2Helper - This is a first fatal log
Logging output for pattern ("%d [%t] %-5level: %msg%n%throwable"):
14:41:23.555 [main] ERROR loghelper.log4j.Log2Helper - This is a first Error log
14:41:23.557 [main] FATAL loghelper.log4j.Log2Helper - This is a first fatal log
最佳答案
首先,未配置根记录器(默认为错误级别) 因此会打印错误和以上级别的日志。
其次,添加附加程序后不会构建构建器。
builder.add(appenderBuilder);
应该更新为
builder.add(appenderBuilder);
builder.build();
关于java - Log4j2 没有像指定的那样格式化输出/appender 没有添加我认为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59944643/