V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
BrookO
V2EX  ›  程序员

spring 还没有启动完成,log4j2 找不到配置路径

  •  
  •   BrookO · 2022-04-28 15:59:51 +08:00 · 1044 次点击
    这是一个创建于 700 天前的主题,其中的信息可能已经有所发展或是发生改变。

    log4j2 中的配置 <Property name="LOG_HOME" value="${spring:logging.home:-/root/app/logs/ntpTime/}"/>

    实际情况: spring 还没有启动完成,此时读取不了 yml 中的 logging.home,会生成一个 spring:logging.home 目录. 等到 spring 启动完成后会在配置的 logging.home 下生成文件

    疑问: 虽然 Property value 配置了默认路径,但是会生成一个垃圾文件(因为 spring 没有启动完成读取不到配置,只能用默认的),请问这个有没有什么解决办法

    4 条回复    2022-04-28 17:02:17 +08:00
    mouxiaoshi
        1
    mouxiaoshi  
       2022-04-28 16:05:21 +08:00
    应该是<springProperty/> 吧
    liangkang1436
        2
    liangkang1436  
       2022-04-28 16:26:37 +08:00
    试试这个

    https://logging.apache.org/log4j/2.x/manual/lookups.html#SpringLookup
    This Lookup will return null values until Spring Boot initializes application logging. The Spring Boot Lookup requires the log4j-spring-boot jar be included as a dependency.
    翻译:Spring Boot 初始化应用日志之后,spring 上下文才会有值,同时,需要依赖 log4j-spring-boot
    liangkang1436
        3
    liangkang1436  
       2022-04-28 16:27:34 +08:00
    如果还不行,你就把 logger 封装成一个 bean 来用,
    BrookO
        4
    BrookO  
    OP
       2022-04-28 17:02:17 +08:00
    @liangkang1436
    @mouxiaoshi
    感谢提供思路,解决方案在 https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.logging.custom-log-configuration

    简单点说就是把 log4j2.xml 改成 log4j2-spring.xml,具体原因未知
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3057 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:46 · PVG 20:46 · LAX 05:46 · JFK 08:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.