Log4j2 属性 替换

Log4j2 Property Replacement

在 Log4j2 附加程序中,使用 contextPath 作为文件名很有用,如: filename="/logs/${web:contextPath}.log。这意味着一个日志配置可以在多个 Web 应用程序中重复使用。

但是,如果 contextPath 是 /foo/bar,则会创建文件 /logs/foo/bar.log。无论如何用 _ 替换 contextPath 中的 / 所以文件名是 /logs/foo_bar.log?

对我来说,这比将上下文路径结构直接复制到日志中更有用。我已经阅读了 StringSubstitution 文档,但无论如何都看不到这样做,但如果有人有解决方案,那将非常有帮助!

我不认为有一种开箱即用的方法。但是您可以轻松地创建执行此操作的自定义查找。

从子类化 WebLookup 开始,并在返回的字符串中用下划线替换“/”字符。

创建自定义 Log4j2 查找的示例: 见manual page, or this question