log4j2 - log4j2 环境变量替换不适用于文件名属性
问题描述
我正在尝试使用包含服务器端口号的文件名配置我的每日滚动日志文件,因为这是一个多服务器应用程序,每个服务器都会生成它自己的日志。
我有以下配置
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout
pattern="[%d{ISO8601}:$${env:SERVER_PORT}-L1] [th:%t] [%c] [%level] [%logger{36}] - %n[%d{ISO8601}:$${env:SERVER_PORT}-L2]%msg%n"/>
</Console>
<RollingFile name="dailyLog" immediateFlush="false" append="true">
<FileName>logs/rCOI.${env:SERVER_PORT:8090}.log</FileName>
<FilePattern>logs/rCOI.${env:SERVER_PORT:8090}.%d{yyyy-MM-dd}.log.zip</FilePattern>
<PatternLayout
pattern="[%d{ISO8601}:$${env:SERVER_PORT}-L1] [th:%t] [%c] [%level] [%logger{36}] - %n[%d{ISO8601}:$${env:SERVER_PORT}-L2]%msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
</Policies>
<DefaultRolloverStrategy max="5" />
</RollingFile>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="dailyLog"/>
</Root>
</Loggers>
</Configuration>
这会生成一个名为 logs/rCOI.${env:SERVER_PORT:8090}.log 的日志,因此它甚至没有使用默认值。我确信 SERVER_PORT 已定义并导出,因为我在应用程序中使用它没有问题。
我也试过 $${env:SERVER_PORT:8090} 和 ${SERVER_PORT} 。没有任何工作。
如果能够为 logs/ 目录使用环境变量,那就太好了。
解决方案
推荐阅读
- javascript - While 循环元素状态 cypress
- laravel - Laravel 从另一个来源获取值
- c# - 表中的 Jquery 自动完成
- c# - 如何自定义渲染器?
- jenkins - 通过 jenkins 运行 gradle 测试套件:依赖项在哪里下载
- mysql - mysql中IF函数中current_timestamp()的使用
- snowflake-cloud-data-platform - 如何克服 Snowflake SQL UDTF 相关子查询错误?
- testing - 元素不可交互,尝试使用多个定位器
- php - 如何在 php 中的查询参数中传递 json Dtat 以进行拉取服务
- css - 变换旋转未按预期旋转多次