如何在 log4j2.xml 文件中引用 Ansible 变量

How can I refer to an Ansible variable in log4j2.xml file

提问人:B.J 提问时间:8/29/2023 更新时间:8/29/2023 访问量:39

问:

我的目标是定义将放置日志文件的目录路径。此配置应在 log4j2.xml 文件中完成。此路径的值可以通过 Ansible 变量设置(如果在 Ansible Tower 模板的额外变量中设置),如果未设置,我应该默认为系统属性,该属性肯定会被设置 -> sys:log.dir

到目前为止,我已经尝试了以下表达式:

第一次尝试:

fileName="{{ pa_logs_dir | default(${sys:log.dir}) }}/log/file.log"

第二次尝试:

<Properties>
  <Property name="LOG_DIR">${pa_logs_dir:-${sys:log.dir}}</Property>
</Properties>

fileName="${LOG_DIR}/log/file.log"

第三次尝试:

<Properties>
  <Property name="LOG_DIR">${sys:pa_logs_dir:-${sys:log.dir}}</Property>
</Properties>

fileName="${LOG_DIR}/log/file.log"

在这两种情况下,和处的 /log/file.log 应该相同。

第一次尝试产生了错误,第二次和第三次尝试编译成功,但是如果我在 Ansible 模板的额外变量中设置了pa_logs_dir变量,不幸的是,它不会被接受。

任何帮助将不胜感激,提前致谢!

XML 日志4j2 模板 ansible-tower

评论

1赞 β.εηοιτ.βε 8/29/2023
在未定义的情况下,您期望的 XML 是什么? 或?pa_logs_dir<Property name="LOG_DIR">${sys:log.dir}</Property><Property name="LOG_DIR">actual_value_of_the_variable_sys:log.dir</Property>
0赞 B.J 8/29/2023
第一个:<Property name=“LOG_DIR”>${sys:log.dir}</Property> 或 <Property
0赞 β.εηοιτ.βε 8/29/2023
那么你只是缺少引号:<Property name="LOG_DIR">{{ pa_logs_dir | default('${sys:log.dir}') }}</Property>
0赞 B.J 8/29/2023
哦,对不起,我答错了,我需要第二种情况:<Property name=“LOG_DIR”>actual_value_of_the_variable_sys:log.dir</Property> 你对此有什么想法吗?顺便说一句,感谢您的第一个回答:)
1赞 β.εηοιτ.βε 8/30/2023
这是一个完全不同的问题,缺乏很多细节。您必须了解 Ansible 无法访问“普通”shell 能够访问的所有变量。那么,如何定义呢?它是在主机上还是在控制器上定义的?sys:log.dir

答: 暂无答案