动态Log4j2日志文件路径
问题描述:
我想在Log4j2.xml动态设置一个目录。动态Log4j2日志文件路径
的Log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console">
<PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<RollingFile name="MyFile" fileName="${sys:logDirectory}/app.log"
filePattern="${sys:logDirectory}/app-%d{MM-dd-yyyy}-%i.log">
<PatternLayout>
<Pattern>%d %p %c [%t] %m%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="1 MB"/>
</Policies>
<DefaultRolloverStrategy max="2000"/>
</RollingFile>
</Appenders>
<Loggers>
<Root level="DEBUG">
<appender-ref ref="Console" level="INFO"/>
<appender-ref ref="MyFile" level="ERROR"/>
</Root>
</Loggers>
</Configuration>
执行命令
public static void main(final String[] args)
{
System.setProperty("log4j.logDirectory", "C:\\debug.log");
org.apache.logging.log4j.core.LoggerContext ctx =
(org.apache.logging.log4j.core.LoggerContext) LogManager.getContext(false);
ctx.reconfigure();
log.error("TEST");
}
输出:
2017年3月15日18:20:27131主错误
无法创建文件$ {sys:logDirectory} /app.log java.io.IOException:
文件名,目录名称或驱动器名称的语法错误。
---编辑:在德国原来的错误信息是:---
(模具语法献给巢穴Dateinamen,Verzeichnisnamen奥德死DatenträgerbezeichnungIST falsch。)
...
答
我尝试过了,我只知道如果我这样做对我有用; System.setProperty(“logDirectory”,“C:\ debug.log”);
因此,请尝试删除log4j。在你的配置语句中。 System.setProperty(“log4j.logDirectory”,“C:\ debug.log”);
它的工作,非常感谢 – Dominik