Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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/0/asp.net-core/3.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
向文件发送输出时出现log4j2问题_Log4j_Log4j2 - Fatal编程技术网

向文件发送输出时出现log4j2问题

向文件发送输出时出现log4j2问题,log4j,log4j2,Log4j,Log4j2,我有以下log4j2.xml文件: <?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Properties> <Property name="LOG_DIR">.</Property> <Property name="ARCHIVE">output.log</Property>

我有以下log4j2.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Properties>
        <Property name="LOG_DIR">.</Property>
        <Property name="ARCHIVE">output.log</Property>
        <Property name="CONSOLE_PATTERN">[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</Property>
        <Property name="FILE_PATTERN">%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n</Property>
    </Properties>
    <Appenders>
        <Console name="console" target="SYSTEM_OUT">
            <PatternLayout pattern="${CONSOLE_PATTERN}"/>
        </Console>
        <File name="file" fileName="${LOG_DIR}/${ARCHIVE}" immediateFlush="false" append="false">
            <PatternLayout pattern="${FILE_PATTERN}"/>
        </File>
    </Appenders>
    <Loggers>
        <Root level="info" additivity="false">
            <AppenderRef ref="console"/>
            <AppenderRef ref="file"/>
        </Root>
        <Logger name="com.my.example" level="TRACE" additivity="false">
            <AppenderRef ref="console"/>
        </Logger>
    </Loggers>
</Configuration>
在同一个类中,我使用以下行记录多条消息:

    logger.trace("Starting application...");
    logger.info("This should be written to file, but doesn't");
调试我的应用程序时:

  • 我的所有跟踪消息都写入控制台
  • 信息消息(logger.Info)仅写入控制台,而不写入控制台 档案。文件已创建,但如果我打开它,它将为空。为什么?

我没有在执行应用程序时进行测试(没有调试)。我想知道这是否正常,是否只有调试成功。

您的主类可能在com.my.example包或子包中。因此,它正在使用该记录器进行日志记录。该记录器仅配置为转到控制台。它的additivity设置为false,因此它不会委托给根记录器。如果这是真的,那么根记录器将再次登录到控制台,然后再登录到该文件

使用您的配置,记录文件的唯一方法是记录来自记录器(而不是来自com.my.example包的记录器)的事件。例如,如果你

Logger logger2=LogManager.getLogger(“测试”); logger2.info(“将写入文件”)

它实际上会转到文件中

请看这里讨论的内容

    logger.trace("Starting application...");
    logger.info("This should be written to file, but doesn't");