java-读取 log4j2.xml 中的 system.properties 变量时出错
我的 log4j2.xml 看起来像 -
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="LogToConsole" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<RollingFile name="RollingFile" fileName="logs/${sys:logfilename}.log" filePattern="logs/${sys:logfilename}.log">
<Policies>
<OnStartupTriggeringPolicy/>
</Policies>
<DefaultRolloverStrategy fileIndex="max" max="10"/>
<PatternLayout pattern="[%d{dd/MMM/yyyy HH:mm:ss.SSS}]> %-5p - %m%n"/>
</RollingFile>
<Async name="ASYNC">
<AppenderRef ref="RollingFile"/>
</Async>
</Appenders>
<Loggers>
<root level="debug">
<appender-ref ref="LogToConsole" level="info"/>
<appender-ref ref="RollingFile" level="debug"/>
</root>
</Loggers>
</Configuration>
我正在设置 system.properties 变量,例如-
public static void main(String[] args) throws IOException {
---some code
System.setProperty("logfilename", "a_cool_logname");
---somecode
}
但是当我使用这个设置运行时,我会收到类似的错误 -
错误无法创建文件日志/${sys:logfilename}.log java.io.IOException: 文件名、目录名或卷标语法不正确
我还尝试了 RollingFile name="RollingFile" fileName="${main:-logfilename}.log" filePattern="${main:-logfilename}.log"> 在这种情况下,生成的日志文件名称为 logfilename.log 。它不替换 main 方法中设置的值。
任何想法,我在哪里犯了错误?