【问题标题】:Log4J XML Strip first character from ${web:contextPath}Log4J XML 从 ${web:contextPath} 中去除第一个字符
【发布时间】:2018-01-30 15:44:43
【问题描述】:

我想知道是否有办法从系统属性中获取子字符串,或者格式化一个以便仅通过 XML 配置去除第一个字符?我遇到的问题是DefaultRolloverStrategyDelete 功能。我有以下代码:

<DefaultRolloverStrategy max="31">
    <Delete basePath="${sys:log.location}" maxDepth="1">
        <IfFileName glob="${web:contextPath}-*.log" />
        <IfLastModified age="90d" />
    </Delete>
</DefaultRolloverStrategy>

但是,在我的日志中,我可以看到这个值 ${web:contextPath}-*.log 被解释为 /Meanwhile-In-Hell-App1-*.log,第一个字符是 /。这不会删除任何旧文件,因为这个值是相对于 basePath 的(经过一些实验,我发现如果我将 glob 硬编码为 Meanwhile-In-Hell-App1-*.log,它会成功删除旧日志。但是,我不能依赖这个方法,所以必须从${web:contextPath}读取)。我也尝试过使用斜线并在它之前添加一个点,因为路径应该是相对的。但这又不会删除旧文件。

我使用的是 log4j2 2.8 版。

【问题讨论】:

  • 删除basePath属性并设置&lt;IfFileName glob="${sys:log.location}${web:contextPath}-*.log" /&gt;怎么样?
  • 嗯,我没想到。我会试试的!谢谢!
  • 欢迎。请让我知道它是否有效。
  • 是的,做到了@LuisMuñoz!
  • 你可以接受答案然后:-)

标签: xml logging log4j2


【解决方案1】:

移除basePath属性并设置

&lt;IfFileName glob="${sys:log.location}${web:contextPath}-*.log" /&gt;

【讨论】:

    猜你喜欢
    • 2010-12-16
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多