首页 > 解决方案 > 在调用 LoggerFactory.getLogger(${className}) 之前如何调用程序化 log4j2 配置更新

问题描述

我想在调用 LoggerFactory.getLogger(${className}) 之前更新Loggres 或重新配置 log4j2 配置(即这是 slf4j api)。

   public void addAppender() {
        LoggerContext ctx = (LoggerContext) LogManager.getContext();
        Configuration config = ctx.getConfiguration();

        PatternLayout layout = PatternLayout.newBuilder()
          .withConfiguration(config)
          .withPattern("%d{HH:mm:ss.SSS} %msg%n")
          .build();


        RollingFileAppender appender = RollingFileAppender.newBuilder()
          .setConfiguration(config)
          .withName("TestAppender")
          .withLayout(layout)
          .withFileName("logs/TestAppenderlog")
          .withFilePattern("Zuzi")
          .withPolicy(SizeBasedTriggeringPolicy.createPolicy("10KB"))
          .build();

        appender.start();
        config.addAppender(appender);
        
        LoggerConfig loggerConfig = config.getLoggerConfig("TestAppender") ;
        loggerConfig.addAppender(appender, null, null);

        ctx.updateLoggers();
    }     

所以这里我想在我的java spring 应用程序中调用这个addAppender() 方法,调用这个方法的理想位置是什么。
例如:是在 contextInitialized() 方法中还是在任何其他建议中?

标签: javaspringspring-mvclogginglog4j2

解决方案


推荐阅读