如何配置log4j以输出所有级别,(跟踪未被输出)

mzsu5hc0  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(128)

我目前正在开发一个使用log4j的maven应用程序,我希望能够将所有日志级别输出到控制台。

<?xml version="1.0" encoding="UTF-8" ?>
<Configuration status="ERROR">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT" level="TRACE">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%7pid] %-5p --- myapp              %-42.42c{1.} : %m%n" />
            <LevelRangeFilter maxLevel="ALL" onMatch="ACCEPT" onMismatch="DENY"/>
        </Console>
    </Appenders>

    <Loggers>
        <Root level="INFO">
            <!-- Console can still output logs from higher log levels. -->
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

I有一个简单的rest调用,它将每个级别输出到控制台。

@RequestMapping(value = "/ping", method = RequestMethod.GET)
    public ResponseEntity<?> processPing() throws Exception {

        log.trace("trace");
        log.debug("debug");
        log.info("info");
        log.warn("warn");
        log.error("error");

        return new ResponseEntity<>(HttpStatus.OK);
    }

当我改变LevelRangeFilter的maxlevel值时,我得到了预期的输出,但当我把它设置为trace或all时,我就没有得到预期的输出。
我已经能够得到跟踪到输出。我已经尝试改变根日志记录器级别,创建一个自定义日志记录器,并完全删除levelRangeFilter。这些都没有工作。
更新:我发现如果我调用log.isTraceEnabled(),它会返回false。我目前正在尝试弄清楚如何启用它。

ehxuflar

ehxuflar1#

您的代码在所有不同的级别上发出日志消息。这很好。
现在,log4j配置有一个仍然适用的过滤器,它位于类别上。
当您将附加程序的级别配置为TRACE时,该设置为log4j 1 history,并在log4j 2中被忽略。但根日志程序的级别设置为INFO。使用该设置,您将只看到INFO、WARN、ERROR和FATAL。

  • 〉将根记录器设置为ALL或至少TRACE。

相关问题