在Log4j2 appender中使用contextPath作为文件名很有用,如:
filename="/logs/${web:contextPath}.log
。这意味着可以跨多个Web应用程序重用一个日志配置。
但是,如果contextPath为/foo/bar
,则会创建文件/logs/foo/bar.log
。无论如何要用/
替换contextPath中的_
,以便文件名为/logs/foo_bar.log
?
对我来说,这比直接将上下文路径结构复制到日志中更有用。我已经阅读了StringSubstitution文档,无论如何都无法查看,但如果有人有解决方案,那将非常有用!
答案 0 :(得分:0)
我认为没有办法开箱即用。但您可以轻松创建执行此操作的自定义查找。
从子类WebLookup开始,并在返回的字符串中用下划线替换'/'字符。
创建自定义Log4j2查找的示例: 请参阅manual page或this question。