Log4J XML Strip $ {web:contextPath}中的第一个字符

时间:2018-01-30 15:44:44

标签: xml logging log4j2

我想知道是否有办法从系统属性获取子字符串,或者格式化子字符串以便仅通过XML配置剥离第一个字符?我遇到的问题是使用Delete <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。这不会删除任何旧文件,因为这个值是相对于Meanwhile-In-Hell-App1-*.log的(通过一些实验,我发现如果我将glob硬编码为${web:contextPath},它会删除旧的日志成功。但是,我不能依赖此方法,因此必须从interface ObjectConstructor { assign<T, U>(target: T, source: U): T & U; 读取。我也试过使用斜杠并在它之前添加一个点,因为路径应该是相对的。但这又是一次,不会删除旧文件。

我使用的是log4j2版本2.8。

1 个答案:

答案 0 :(得分:0)

删除basePath属性并设置

<IfFileName glob="${sys:log.location}${web:contextPath}-*.log" />