журналы не печатают полную трассировку стека исключений в файле журнала - PullRequest
0 голосов
/ 01 апреля 2020

Я пытаюсь распечатать всю трассировку стека исключений в моем файле журнала без добавления оператора log.error в коде, так как я должен сделать эту реализацию c во всем приложении. Может ли кто-нибудь помочь в этом Вот конфигурации log4j2 xml файл.

 <?xml version="1.0" encoding="UTF-8"?>
 <configuration status="WARN">
  <appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>

    <File name="MyFile" fileName="logs/app.log">
        <PatternLayout pattern="%d{yyyy-mm-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </File>             
  </appenders>

         <logger name="org.springframework" level="error" additivity="false">
            <AppenderRef ref="MyFile"/>
        </logger>
  <root level="INFO">
      <appender-ref ref="Console"/>

    </root>    

</configuration>

1 Ответ

0 голосов
/ 01 апреля 2020

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

Написать отдельный класс, который в конечном итоге будет обрабатывать все исключения, вы можете использовать @ExceptionHandler(Exception.class), это обработает все исключения, в этом вы можете перехватить исключение и выйти из полной трассировки стека, используя log.error(e). Аннотирование этого класса с помощью @ControllerAdvice(<all_pckages_you_want_cover>) будет гарантировать, что всякий раз, когда возникает необработанное исключение, оно в конце концов перехватывается и регистрируется.

Ссылка: https://dzone.com/articles/global-exception-handling-with-controlleradvice

PS: Если вы спрашиваете об обработанных исключениях, они в любом случае будут обрабатываться пользователем, поэтому вы добавляете одну строку для их регистрации в блоке catch.

...