首页 > 解决方案 > 登录 Grails:使用 Log4j2 重新加载外部配置

问题描述

我正在尝试配置 Grails 以使用分离生产和开发模式的外部 Log4j2 配置文件。它应该监听配置更改并在一段时间后刷新它。对于 Grails 2.x,可以通过Log4jConfigurer像这样注册 bean 来完成:

switch (Environment.current) {
   case Environment.PRODUCTION:
      log4jConfigurer(MethodInvokingFactoryBean) {
         targetClass = "org.springframework.util.Log4jConfigurer"
         targetMethod = "initLogging"
         arguments = ["classpath:ogc-log4j.xml", 30000]
      } 

   case Environment.DEVELOPMENT:
     log4jConfigurer(MethodInvokingFactoryBean) {
        targetClass = "org.springframework.util.Log4jConfigurer"
        targetMethod = "initLogging"
        arguments = ["classpath:log4j-dev.xml", 30000]
     }
}

由于某些原因,这种方法在 Grails 3.x 中不起作用。如何在 Grails 3.3.3 或 Spring Boot 中执行此操作(我想它应该可以工作,因为 Grails 3.x 基于 Spring Boot)?

标签: springspring-bootgrailslog4jgrails3

解决方案


从 3.3.3 的 grails

而不是在Java代码中使用它。环境配置已移至 YML 配置文件。

我们可以将不同的值传递给不同的环境并更改 log4j 的配置

参考文档

环境配置文档


推荐阅读