xml - 从 log4j2 xml 中的完整路径获取文件名
问题描述
在我的 log4j2.xml 文件中,我通过传递系统属性来获取日志文件的完整路径
-Dlogfilename=/home/user/logs/server
Log4j2 配置:
<Property name="logFile">${sys:logfilename:-/home/user/logs/server}</Property>
作为附加要求,我需要从上述属性中获取日志文件的名称,并且我无法传递新的系统属性。如何从完整路径中获取文件名?除了用于数据传输之外,我对 XML 没有任何经验。
解决方案
您错误地使用了系统属性查找。您应该像这样指定查找和要查找的键:${sys:logfilename}
这是一个简单的例子:
package example;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class SomeClass {
private static final Logger log = LogManager.getLogger();
public static void main(String[] args){
log.info("Here's some info!");
}
}
这是 log4j2.xml 配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<File name="File" fileName="logs/${sys:myProperty}"
immediateFlush="false" append="false">
<PatternLayout
pattern="%-5level %logger{36} - %msg%n" />
</File>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="File" />
</Root>
</Loggers>
</Configuration>
当我使用以下 JVM 参数运行此代码时:
-DmyProperty=myFile.log
它会生成一个名为“myFile.log”的文件,该文件包含以下输出:
INFO example.SomeClass - Here's some info!
推荐阅读
- java - 如何在客户支持的角度为不同的用户组在后台进行票证限制?
- python - Time.sleep() 在循环内无法正常工作
- amazon-web-services - cfn-init 用于 cloudformation 启动模板
- python - pandas 函数基于 dict 创建组合列
- sql - CTE - 获取父级
- python-3.x - 解析二维列表并返回列表的值
- php - Eloquent - 将两个查询的结果与聚合/总和合并
- c# - 插入命令oledb excel c#的问题
- sql - Oracle SQL - 按特定顺序列出父表和子表中的记录
- matlab - 如何将我的数据拟合到指数模型中,但在 matlab 中有一个额外的常数