You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在logback.xml中获取模块路径 参考PID获取的实现方式

logback.xml 读取模块路径的正确实现方式

为什么${LOG_PATH}不生效

${LOG_PATH}不是logback原生内置的占位符,仅在Spring Boot项目中由框架默认注入上下文后才可使用,非Spring Boot环境、或配置文件未兼容Spring上下文的场景下无法直接读取。

正确配置方案

场景1:Spring Boot 项目

  • 若要读取项目运行的工作目录,可直接使用JDK自带的系统属性${user.dir},logback默认支持读取所有JDK系统属性
  • 若要自定义模块路径,可按如下步骤操作:
    • 把logback配置文件名改为logback-spring.xml(只有该命名规则的配置文件才能读取Spring上下文的配置)
    • 在application.yml或application.properties中添加自定义配置:
      log:
        module-path: /deploy/order-module/logs
      
    • 在logback配置中直接使用${log.module-path}读取即可

场景2:普通Java项目(非Spring Boot)

你可以通过两种方式注入自定义的模块路径变量:

  • 启动时通过JVM参数传入:
    启动命令中添加参数-Dmodule.path=你的模块实际路径,示例:
    java -Dmodule.path=/data/app/user-module -jar user-module.jar
    
    之后logback配置中直接用${module.path}读取即可
  • 代码启动时手动注入到logback上下文:
    import ch.qos.logback.classic.LoggerContext;
    import org.slf4j.LoggerFactory;
    
    // 项目初始化阶段执行
    LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
    context.putProperty("MODULE_PATH", "你的模块路径");
    context.reset();
    
    之后logback配置中用${MODULE_PATH}读取即可

最终效果示例(和你给出的PID写法兼容)

{
  "process": "${PID}",
  "modulePath": "${MODULE_PATH}"
}

内容的提问来源于stack exchange,提问作者user15425589

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 18:54:03