Не удалось получить журналы отладки на консоли - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть ниже конфигурация для моего log4j2. xml файла в моем приложении для весенней загрузки, конфигурация работает для информации, ошибок, предупреждений, но я не могу получить журналы для отладки на моей консоли, можете ли вы указать, где я должен выполните изменения, чтобы получить журналы отладки, напечатанные на консоли.

<?xml version="1.0" encoding="UTF-8"?>

<Configuration monitorInterval="60">
    <Properties>
        <Property name="FUNCTION">project-name</Property>
    </Properties>


    <Appenders>
        <Console name="consoleOut" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{ISO8601} %-5p  %-30c{1} [%-10t] %m%n" />
            <Filters>
                <ThresholdFilter level="FATAL" onMatch="DENY"
                    onMismatch="ACCEPT" />
                <ThresholdFilter level="DEBUG" />
            </Filters>
        </Console>


        <Console name="consoleError" target="SYSTEM_ERR">
            <PatternLayout pattern="%d{ISO8601} %-5p  %-30c{1} [%-10t] %m%n" />
            <Filters>
                <ThresholdFilter level="FATAL" />
            </Filters>
        </Console>

        <RollingFile name="logFile" fileName="./log/${FUNCTION}.log"
            filePattern="./log/${FUNCTION}.log-%i">
            <PatternLayout>
                <Pattern>%d{ISO8601} %-5p %-30c{1} [%-10t] %m%n</Pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="10MB" />
            </Policies>
            <DefaultRolloverStrategy max="10" />
        </RollingFile>
    </Appenders>
	
    <Loggers>
        <Logger name="com.myclass" level="DEBUG" />
        <Root level="INFO">
            <AppenderRef ref="logFile" />
            <AppenderRef ref="consoleOut" />
            <AppenderRef ref="consoleError" />
        </Root>
    </Loggers>

</Configuration>

Я также изменил уровень ведения журнала root на DEBUG, но он также не помог.

1 Ответ

0 голосов
/ 13 февраля 2020

Давайте рассмотрим, как Log4j будет обрабатывать событие отладки, предполагая, что событие использует Logger с именем, начинающимся с «com.myclass».

  1. Глобальных фильтров нет, поэтому событие обходит их.
  2. Событие присваивается «com.myclass» LoggerConfig с уровнем DEBUG. Любое событие с DEBUG, INFO, WARN, ERROR или FATAL будет продолжено. События TRACE будут отклонены. Таким образом, событие будет по-прежнему оцениваться.
  3. В Logger нет фильтров, поэтому событие будет по-прежнему оцениваться.
  4. LoggerConfig не имеет ссылок Appender, поэтому событие будет перенаправляться в root LoggerConfig.
  5. Root LoggerConfig имеет 3 AppenderRefs, ни один из которых не имеет фильтров, поэтому событие будет передано каждому из них.
  6. Приложение LogFile не имеет фильтров, поэтому событие будет быть зарегистрировано.
  7. В приложении «Консоль» есть два фильтра. Первый будет отклонять любые события FATAL и принимать все остальное, поэтому события DEBUG, INFO, WARN и ERROR должны регистрироваться на консоли. Фильтр DEBUG будет игнорироваться, поскольку все уже было принято или отклонено. В этом случае событие отладки будет зарегистрировано в system.out.
  8. Событие передается приложению consoleError. У него есть фильтр, использующий критерии соответствия по умолчанию, поэтому события FATAL будут по-прежнему оцениваться, а все остальные события отклоняются. Таким образом, событие отладки не будет зарегистрировано в system.error.

Таким образом, в соответствии с вышеизложенным, вы должны увидеть ваше событие журнала. Это указывает на то, что вы все еще используете конфигурацию ведения журналов Spring Boot по умолчанию, так как Документация Spring Boot указывает на уровень по умолчанию info.

...