java - 动态 Log4j2 日志文件路径

标签 java xml logging

我想在Log4j2.xml动态设置一个目录。

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-03-15 18:20:27,131 main ERROR
Unable to create file ${sys:logDirectory}/app.log java.io.IOException:
The syntax for the filename, directory name or drive name is wrong.
--- EDIT: the original error message in german was: ---
(Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch.)
...

最佳答案

我尝试过,但我发现如果我这样做,它对我有用; System.setProperty("logDirectory", "C:\debug.log");

所以尝试删除log4j。在你的配置语句中。 System.setProperty("log4j.logDirectory", "C:\debug.log");

关于java - 动态 Log4j2 日志文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42816892/

相关文章:

java - Hornetq 延迟重新传递消息组

xml - 使用 XSLT 自动创建 xml 元素

xml - 如何在Grails中使用XML文件国际化(i18n)

ruby-on-rails - 来自 rake Assets 的详细输出 :precompile

python - 如何将 csv 文件中的字符串与日志文件中的字符串进行匹配?是否可以?

java - 同时使用大写和小写搜索

java - 有没有办法将 Guava 的 HashBiMap 用于驱逐?

r - 在rentrez中使用entrez_fetch解析PubMed XML

logging - 如何使用 GlassFish 打印完整的堆栈跟踪?

Javafx 在 Canvas 上拖放形状