Когда фоновая программа разрабатывается и запущена, обычно используются информация о журнале и записи журнала журнала. Во время разработки информация журнала может быстро найти проблему и помочь нам быстро развиваться. Если ошибка или ошибка возникают после того, как программа находится в Интернете, для поиска проблемы необходимы записи журналов.
Spring Boot может интегрировать множество различных систем ведения журнала, среди которых наиболее часто используемые Apache Log4j, а Log4J 2 - обновленная версия Log4J, которая внесла много значительных улучшений по сравнению с Log4J 1.x. Таким образом, в этом блоге напрямую рассказывается о том, как Spring Boot интегрирует и настраивает log4j2.
1. Импорт Log4J2 пакет
Если вы используете Gradle, добавьте следующие зависимости в файле build.gradle. Метод Gradle используется в примере кода.
Зависимости {// log4j2 compile "org.apache.logging.log4j: log4j-api: 2.8" compile "org.apache.logging.log4j: log4j-core: 2.8" // используется для поддержки Async Compile в logger 'com.lmax: disruptor: 3.3.6'}Если вы используете Maven, добавьте следующие зависимости в файле pom.xml.
<Depectientdess> <dependency> <groupid> org.apache.logging.log4j </GroupId> <artifactId> log4j-api </artifactid> <sersive> 2.8 </version> </reseplion> <dependence> <groupid> org.apache.logging.log4J </artifactId> arg.-core. </depertive> <depervice> <groupid> com.lmax </groupid> <artifactid> disruptor </artifactid> <sersive> 3.3.6 </version> </dependent> </depertion>
2. Добавить файл конфигурации log4j2
Создайте файл log4j2.xml в корневом каталоге файла ресурсов ресурсов проекта и скопируйте следующий код в файл.
<? xml version = "1.0" Encoding = "UTF-8"?> <!-Состояние после конфигурации используется для установки вывода информации внутри самого log4J2. Это не может быть установлено. Когда он настроен на отслеживание, вы увидите различные подробные выходы внутри log4j2. Can be set to OFF (off) or Error (only output error information) --><Configurationstatus="OFF"> <!-- Log file directory and compressed file directory configuration --> <Properties> <Propertyname="fileName">/home/kylin/log/knight/spring_log</Property> <Propertyname="fileGz">/home/kylin/log/knight/spring_log/7z</Property> </Properties> <pplicenders> <!-Конфигурация для журналов консоли выходных консолей-> <consolename = "console" target = "system_out"> <!-Консоль только выводит информацию на уровне и выше (onmatch) и другие прямые отзывы (Onmismatch)-> <thresholdfillevel = "onmatch =" Accept "onMismatch ="--> <-----------> <-> <-> <-----> <-> <----> <---> <-> <-> <-------information = "-> <-> <! <Patternlayoutpattern = " %d {hh: mm: ss.sss} [ %t] %-5level %logger {36}- %msg %n"/> </console> <!- Распечатайте всю информацию. Каждый раз, когда размер превышает размер, журнал такого размера будет автоматически храниться в папке, созданной в годичном месяце и сжимается как архив-> <rollingrandomaccessfilename = "infofile" filename = "$ {filename}/web-info.log" nectiateflush = "false" filepattern = "$ {filegz}/$$ {date: yyyy-mm}/app- %d {mm-dd-yyyy}- %i.web-info.gz"> <patternlayoutpattern = " %d {yyyy-mm-dd 'at' hh: mm: mm: ss z} [ %t] %-5- %-5 %msg%xex%n "/> <Политики> <timebadeRiggeringPolicyInterval =" 6 "Modulate =" true "/> <sizebasedTriggeringPolicysize =" 50 Mb "/> </policies> <Filters> <!-Запись только информация и уровень предупреждения-> <thresholdfilterle =" onmatch = "denymath on"/neversimatm <ThresholdFilterLevel = "info" onMatch = "Accept" oNmismatch = "deny"/> </filters> <!-Укажите максимальное количество сжатых пакетов в день, default 7, если он превышает предыдущий, он будет перезаписан-> <defaultrollogrategrategymax = "50"/> </rollingrandomaccessfile> <Rollingrandomaccessfilename = "errorfile" filename = "$ {filename}/web-error.log" nefitiateflush = "false" filePattern = "$ {filegz}/$$ {дата: yyyy-mm}/app-%d {mm-dd-yyyy}-%i.Web-er. <Patternlayoutpattern = " %d {yyyyyy-mm-dd 'at' hh: mm: ss z} [ %t] %-5level %logger {36} %l %m- %msg %xex %n"/> <policies> <timebaderiggeringpolicyinterval = "6" modulate = "true"/> <sizebaseBySizingPolicyNiteInterVal = "6" modulate = "/> <sizeBaseBisIgingSizeIngeSizingPalInterPal =" 6 ". Mb "/> </policies> <filters> <!-Запишите только информацию об уровне ошибок-> <thresholdfilterlevel =" error "onmatch =" Accept "onmismatch =" deny "/> </filters> <!-Укажите максимальное количество сжатых пакетов в день, default 7, если он превышает предыдущий, он будет чрезмерно перевернуть </RollingRandomAccessFile> </Appenders> <!-- Specify the maximum number of compressed packets per day, the default is 7, and the previous one will be overwritten --> <DefaultRolloverStrategymax="50"/> </RollingRandomAccessFile> </Appenders> <!-- Global configuration, by default all Loggers inherit this configuration --> <Loggers> <! - asyncroot - асинхронное ведение журнала - требует поддержки от Lmax Disruptor -> <asyncrootlevel = "info" Additivity = "false"> <appenderRefref = "Консоль"/> <appenderRefref = "infofile"/> <appenderrefref = "errorfile"/> </asyncoroot> </loggers> <//loggers> <//loggers> <//loggers> <//loggers> </asyncoroot> <//loggers> </asyncoroot> </rogers> </> </asyncoroot>3. Написать вспомогательный класс log4j2
После создания вышеуказанной конфигурации мы можем написать вспомогательный класс, чтобы сделать его более удобным для использования log4j2 для записи журналов.
Создайте файл класса L.Java в пакете UTILS.
Пакет com.spring.log4j2.utils; import org.apache.logging.log4j.logmanager; import org.apache.logging.log4j.logger;/*** Логирование журнала. */public classl {private Static Final Logger logger = logmanager.getLogger (); privatel () { / * не может быть создан * / бросить новое UnsupportedOperationException («не может быть создан»); } publicstaticLoggergetLogger () {return logger; } publicstaticVoidt (String msg) {logger.trace (msg); } publicstaticVoidd (String msg) {logger.debug (msg); } publicstaticVoidi (String msg) {logger.info (msg); } publicstaticvoidw (String msg) {logger.warn (msg); } publicstaticVoide (String msg) {logger.error (msg); }}После написания вспомогательного класса он очень прост в использовании, и его можно легко использовать с помощью следующего кода.
@ControllerPublic classWebController {@Requestmapping ("/") publictringIndex () {String msg = "Конфигурация и использование log4j2 в серии Spring Boot"; LT (MSG); LD (MSG); Li (MSG); LW (MSG); Le (MSG); вернуть "индекс"; }}Вспомогательный класс здесь просто записывает некоторые основные методы использования, вы можете настроить их в соответствии с вашими потребностями и добавить больше вспомогательных методов. Для методов, не представленных в классе Helper, вы также можете использовать метод L.GetLogger (), чтобы использовать экземпляр Logger для использования.
4. Проверка результата
Рейтинг уровня журналов: Trace <Debug <Info <Warn <ошибка <фатальная.
Потому что уровень в моем log4j2 установлен на уровень информации. Следовательно, только три уровня информации, предупреждают и ошибку можно увидеть в информации о печати (информация на роковом уровне не печатается, в противном случае ее можно увидеть).
Информация о печати показана на рисунке ниже:
В то же время в компьютерной системе был сгенерирован файл журнала, как показано на рисунке ниже:
Наблюдая за путем, вы можете обнаружить, что этот путь является именно тем путем, установленным в log4j2.xml:
<!-каталог файлов журнала и конфигурация каталога сжатых файлов-> <properties> <propertyname = "filename">/home/kylin/log/knight/spring_log </property> <propertyname = "filegz">/home/kylin/log/knight/spring_log/7z </property> </properties>
5. Подробнее
Github адрес log4j2: https://github.com/apache/logging-log4j2
Пример кодового адреса этого учебника: https://github.com/dkylin/springboot-sample/tree/master/springboot-log4j2
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.