java - Log4j2 没有像指定的那样格式化输出/appender 没有添加我认为

标签 java logging log4j log4j2

我正在学习在我的应用程序中使用 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");

    }
  • 我面临的问题是:

    1. 日志输出不遵循我指定的模式。我有 尝试更改图案,但仍然以相同的格式打印。
    2. 我添加了四个日志记录语句,其中仅打印了两个(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/

相关文章:

java - Window.open() 在 liferay portlet 中不起作用

c++ - 登录多进程应用程序以及多线程

android - 缺少 logcat 消息

java - 如何使用 SLF4J 和 Log4j 在日志消息中包含标记

java - Log4j - 创建另一个具有相同属性的附加程序

java - 如果 profiler 不是答案,我们还有什么其他选择?

java - 安卓暂停/恢复不工作

linux - 在 Linux 中动态查看日志文件

log4j - 使用 log4j 将 spring 日志转移到特定的日志文件

java - 等待倒计时结束