java - Log4j 配置 : how to use environment variable in yaml configuration file log4j2. yaml

标签 java tomcat yaml log4j2

我正在尝试配置在 Tomcat 上运行的应用程序的日志系统,我希望它在 $CATALINA_HOME/logs 下记录而不对路径进行硬编码。 为此,我创建了这个配置文件 log4j2.yaml:

Configuration:
  name: Default
  Properties:
    Property:
      name: log-path
      value: "/opt/apache-tomcat-8.5.15/logs"
  Appenders:
    Console:
      name: Console_Appender
      target: SYSTEM_OUT
      PatternLayout:
        pattern: "[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"
    File:
      name: File_Appender
      fileName: ${log-path}/logfile.log
      PatternLayout:
        pattern: "[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"
  Loggers:
    Root:
      level: error
      AppenderRef:
        - ref: Console_Appender
    Logger:
      - name: myname
        level: debug
        AppenderRef:
          - ref: File_Appender

这确实有效。我想用环境变量 CATALINA_HOME 替换/opt/apache-tomcat-8.5.15。实现此目的的语法是什么?

最佳答案

如果您或任何人仍在寻找这个

环境属性设置如下

 -DYourSystemProperies=/home/winner

你可以指定这个变量使用

RollingFile:
       - name: RollingFile_Appender
         fileName: ${sys:YourSystemProperies}/abc.log

关于java - Log4j 配置 : how to use environment variable in yaml configuration file log4j2. yaml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45145371/

相关文章:

docker - yaml.parser.ParserError-为什么不起作用?

java - 强制用户在 Java 中声明变量

java - 使用 Spring 框架查找实现特定接口(interface)但排除扩展接口(interface)子实现的单个类

java - 迁移到 Tomcat 8 : InstanceAlreadyExistsException datasource

python - 将 YAML 文件中的数据加载到 python 中的变量中

在 Go 中解析 YAML : map in list

Java unicode 操作

java - 取消之前的请求

java - 在 Tomcat 服务器中使用自签名证书的可信 SSL,无需在浏览器中导入证书

java - jconsole 监控的意外 tomcat 内存使用增加