Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Slf4j/log4j:运行时添加的FileAppender不';行不通_Java_Log4j_Slf4j_Log4j2 - Fatal编程技术网

Java Slf4j/log4j:运行时添加的FileAppender不';行不通

Java Slf4j/log4j:运行时添加的FileAppender不';行不通,java,log4j,slf4j,log4j2,Java,Log4j,Slf4j,Log4j2,我使用的是log4j2.5和slf4j1.7.19。这是我的log4j2.xml: 现在我想在运行时添加一个FileAppender: 不幸的是,这不起作用。正在创建日志文件(路径),但仍为空。不过,我希望包含最后一条log语句(“Appender added”)。 我根本没有收到任何错误消息 您知道这里可能有什么问题吗?非常确定rootlogger不会有它需要的appender ref对象。谢谢。我以为我通过调用rootLogger.addAppender(appender)为根记录器提供

我使用的是log4j2.5和slf4j1.7.19。这是我的log4j2.xml:

现在我想在运行时添加一个FileAppender:

不幸的是,这不起作用。正在创建日志文件(路径),但仍为空。不过,我希望包含最后一条log语句(“Appender added”)。 我根本没有收到任何错误消息


您知道这里可能有什么问题吗?

非常确定rootlogger不会有它需要的appender ref对象。谢谢。我以为我通过调用
rootLogger.addAppender(appender)为根记录器提供了appender?我刚刚意识到日志文件并不是空的,因为我们在应用程序中包含了MongoDB。事实上,一条MongoDB日志语句被写入文件中,例如:
[INFO][ost-startStop-2]15:56:12454 52234。。org.mongodb.driver.connection:71-由于池已关闭,所以关闭了[connectionId{localValue:2,serverValue:68}]到localhost:27017的连接。
现在我完全糊涂了。这是什么意思?
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Properties>
        <Property name="log-path">D:/opt/verzeichnis-shop/logs/</Property>
    </Properties>

    <Appenders>

        <Console name="A1" target="SYSTEM_OUT">
            <PatternLayout pattern="[%-5p][%15.15t]%d{HH:mm:ss,SSS} %-6r ..%35.35c:%-4L - %m%n"/>
        </Console>


        <RollingFile name="A2" fileName="${log-path}/vzshop.log" filePattern="${log-path}/vzshop_%d{yyyy-MM-dd}.log">
            <PatternLayout>
                <pattern>[%-5p][%15.15t]%d{HH:mm:ss,SSS} %-6r ..%35.35c:%-4L - %m%n</pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
            </Policies>
        </RollingFile>
    </Appenders>

    <Loggers>
        <Logger name="de.mycompany.vzshop" level="debug" additivity="false">
            <AppenderRef ref="A1"/>
            <AppenderRef ref="A2"/>
        </Logger>

        <Root level="info">
            <AppenderRef ref="A1"/>
            <AppenderRef ref="A2"/>
        </Root>
    </Loggers>

</Configuration>
LoggerContext context = (org.apache.logging.log4j.core.LoggerContext) LogManager.getContext(false);
File file = new File("path/to/log4j2.xml");
context.setConfigLocation(file.toURI());
public static void appendBookLogger(String bookDir, String uuid) {

    LoggerContext loggerContext = (org.apache.logging.log4j.core.LoggerContext) LogManager.getContext(false);
    String path = bookDir + File.separator + uuid + ".log";
    logger.info("Adding appender: " + path);

    final Configuration config = loggerContext.getConfiguration();
    PatternLayout layout = PatternLayout.createLayout("[%-5p][%15.15t]%d{HH:mm:ss,SSS} %-6r ..%35.35c:%-4L - %m%n", null, config, null,
        null,false, false, null, null);
    Appender appender = FileAppender.createAppender(path, "false", "false", "File", "true",
        "false", "false", "4000", layout, null, "false", null, config);
    appender.start();

    org.apache.logging.log4j.core.Logger rootLogger = loggerContext.getRootLogger();
    rootLogger.addAppender(appender);
    logger.info("Appender added.");
}