В приложениях Java журналы обычно делятся на следующие 5 уровней:
Spring Boot использует журнал Apache Commons в качестве внутренней структуры ведения журнала. Это просто интерфейс журнала. В фактических приложениях необходимо указать соответствующую реализацию журнала для этого интерфейса.
Реализация журнала Springbt по умолчанию - журнал Java Util, который представляет собой пакет журналов, встроенный в JDK. Кроме того, Springbt также поддерживает очень популярные реализации журналов, такие как Log4J и Logack.
Приведенные выше реализации журнала в совокупности называются фреймворками журнала
Давайте практиковать это ниже!
Использование плагина для ведения журнала Spring Boot
Сначала добавьте конфигурацию в файл Application.properties:
logging.level.root = info
Код контроллера выглядит следующим образом:
Пакет com.hansonwang99.controller; import com.hansonwang99.k8sresctrlapplication; импорт org.slf4j.logger; import org.slf4j.loggerfactory; import org.springframework.web.bindatation.getmapping; import.springframework.bindatation.nannotation.getmaping; org.springframework.web.bind.annotation.restcontroller;@restcontroller@requestmapping ("/testlogging") открытый класс loggingtestcontroller {private static logger = loggerfactory.getlogger (k8sresctrlApplication.class); @Getmapping ("/hello") public String hello () {logger.info ("Журнал тестирования ..."); вернуть "Привет"; }}Результаты бега
Поскольку уровень журнала установлен для информации, информация о журнале, содержащую информацию и выше, будет распечатана
Как можно увидеть здесь, большинство информационных журналов поступают из самой структуры Springbt. Если мы хотим заблокировать их, сначала мы можем установить уровень журнала на ошибку, чтобы информация о самой структуре не была напечатана. Затем установите конкретный пакет в приложении в журнал уровня отладки, чтобы вы могли видеть только журналы уровня отладки в пакете, о котором вы обеспокоены.
Управляет уровнем журнала конкретного пакета
Измените конфигурацию в Application.yml
Регистрация: уровень: root: ошибка com.hansonwang99.controller: отладка
Очевидно, что уровень журнала корня устанавливается на ошибку, а затем уровень журнала пакета com.hansonwang99.controller установлен для отладки, что означает: сначала запрещать все настройки, а затем разрешать отдельные настройки.
Код контроллера
пакет com.hansonwang99.controller; import org.slf4j.logger; import org.slf4j.loggerfactory; import org.springframework.web.bindtation.getmapping; импорт org.springframework.web.bindtation.requestmaping; org.springframework.web.bind.annotation.restcontroller;@restcontroller@requestmapping ("/testlogging") открытый класс loggingtestcontroller {private logger = loggerfactory.getlogger (this.getClass ()); @Getmapping ("/hello") public String hello () {logger.info ("Журнал тестирования ..."); вернуть "Привет"; }}Результаты бега
Можно видеть, что сама структура скрыта все бревна на уровне, а журналы в указанном пакете успешно напечатаны в соответствии с уровнем.
Выходные журналы в файл
Регистрация: Уровень: root: error com.hansonwang99.controller: файл отладки: $ {user.home} /logs/hello.logРезультаты бега
Используя журнал Spring Boot, мы обнаружили, что, хотя журнал был выведен в файл, копия все еще будет напечатана в консоли. Мы обнаружили, что использование org.slf4j.Logger не может решить эту проблему
Интегрированный фреймворк log4j log
Добавить зависимости в pom.xml
<Depective> <groupid> org.springframework.boot </GroupId> <ArtifactId> Spring-boot-starter-web </artifactid> <slosionions> <sclocusion> <groupid> org.springframework.boot </GroupId> <strifactid> Spring-B oot-starter-logging </artifactid> </exclusion> </exclusions> </dependency> <Depective> <groupId> org.springframework.boot </groupid> <artifactid> Spring-boot-starter-log4j2 </artifactid> </jependency>
Добавьте файл log4j2.xml в каталог ресурсов, содержимое следующее:
<? xml version = "1.0" Encoding = "UTF -8"?> <Конфигурация> <pplicenders> <file name = "file" filename = "$ {sys: user.home} /logs/hello2.log"> <patternlayout pattern = " %d {hh: mm: ss, ss} %p %c ( %l) - %n"/piele n "/n"/n "/n"/pief/n "/piele n"/piele n "/piele n"/piele n "/piele n"/piele n "/n"/piele n ". </appenders> <loggers> <root level = "error"> <appender-ref ref = "file"/> </root> <name = "com.hansonwang99.controller" level = "Debug"/> </loggers> </configuration>Другой код остается прежним
Запуск программы обнаружил, что консоль не имеет вывода журнала, и в файле hello2.log есть контент, который соответствует нашим ожиданиям:
И формат журнала соответствует определению в pattern="%d{HH:mm:ss,SSS} %p %c (%L) - %m%n" Формат
Log4j занимается дальнейшей практикой
Pom.xml Конфигурация:
<Depective> <groupid> org.springframework.boot </GroupId> <ArtifactId> Spring-boot-starter-web </artifactid> <slosionions> <sclocusion> <groupid> org.springframework.boot </GroupId> <strifactid> Spring-B oot-starter-logging </artifactid> </exclusion> </exclusions> </dependency> <Depective> <groupId> org.springframework.boot </groupid> <artifactid> Spring-boot-starter-log4j2 </artifactid> </jependency>
log4j2.xml Конфигурация
<? xml version = "1.0" Encoding = "utf-8"?> <vani-varn "> <properties> <name =" app_name "> springboot-web </properation> <name =" log_path "> logs/$ {app_name} </property> </ockers> <provenders> <sosole name =" onsole "= ystemole" = ystemole "=" argy_sole "= ystemole" = "console" = "ystem Ol-" = "ystem Ol-" = "argeSole". <Patternlayout pattern = "[%d] [%t] [%p] [%l]%m%n"/> </console> <rollingfile name = "rollingfileinfo" filename = "$ {log_path}/info.log" filePattern = "$ {log_path}/$$ {date: yyyy-mm}/info-%d {yyyy-mm-dd}-%i.log.gz"> <filters> <thresholdfilter level = "info"/> <thresholdfilter level = "warn" onmatch = "deny" onmismatch = "/>"/> "/>"/> "/>"/> "/>"/> neularters = "/>"/> neulartters = "/>"/> "/>"/> "/>"/> "/>"/> "/>"/> "/>"/> "/>". Pattern = "[%d] [%t] [%p] [%c:%l]%m%n" /> <политики> <!-Архив ежедневные файлы-> <временная биография интервалаполисии = "1" Модулировать = "true" /> <!-Ограничьте размер единого файла-> <sizebasedrigging size = "2 Mb" /> < /> < /> < /> < /> <! <DefaultrolloverStrategy compressionlevel = "0" max = "10"/> </rollingfile> <rollingfile name = "rollingfilewarn" filename = "$ {log_path} /warn.log" filePattern = "$ {log_path}/$$ {date: yyyy-mm}/warn-%d {yyyy-mm-dd}-%i.log.gz"> <Filters> <thresholdFilter level = "warn"/> <thresholdfilter level = "onmatch =" deny "onmismatch ="/> "/>"/> "/>"/> "/>"/> "/>"/> "/>"/> "/>"/> "/>"/> "/>"/> "/>"/> "/>"/> "/>"/> "/>"/> "/>"/> "/>"/> "/>"/> "/>"/> "/>"/> "/>"/> "/>"/> "/>"/> "/>"/> "/>"/> "/>"/> "/>". Pattern = "[%d] [%t] [%p] [%c:%l]%m%n" /> <политики> <!-Архив ежедневные файлы-> <временная биография интервалаполисии = "1" Модулировать = "true" /> <!-Ограничьте размер единого файла-> <sizebasedrigging size = "2 Mb" /> < /> < /> < /> < /> <! <DefaultrolloverStrategy compressionlevel = "0" max = "10"/> </rollingfile> <rollingfile name = "rollingfileerror" filename = "$ {log_path}/error.log" filePattern = "$ {log_path} /$$ {date: yyyy-mm} /error-%d {yyyy-mm-dd}-%i.log.gz"> <thresholdfilter level = "ошибка" /> <patternlayout pattern = "[%d] [%t] [%p] [%c:%l]%m%n" /n "! Файлы-> <TimeBadeTriggeringPolicy Interval = "1" Modulate = "true"/> <!-ограничить размер отдельного файла-> <sizebasedTriggeringPolicy Size = "2 MB"/> </Policies> <!-Ограничение количества файлов в день-> <pelaultrolloverStrategy CompressionLevel = "0" max = "10"/"/rllingstrategrategy> </roplingstrategrategy> </roplingStrategrategrategry <root level = "info"> <appender-ref ref = "console" /> <appender-ref ref = "rollingfileinfo" /> <appender-ref ref = "rollingfilewarn" /> <appender-ref ref = "rollingfileerror" /> < /root> < /loggers> < /configuration>>Код контроллера:
пакет com.hansonwang99.controller; import org.apache.logging.log4j.logmanager; import org.apache.logging.log4j.logger; импорт org.springframework.web.bindtation.getmapping; импорт org.spramework.web.bindtatation.Requpation. org.springframework.web.bind.annotation.restcontroller;@restcontroller@requestmapping ("/testlogging") открытый класс loggingtestcontroller {private final logger = logmanager.getlogger (this.getClass ()); @Getmapping ("/hello") public String hello () {for (int i = 0; i <10_0000; i ++) {logger.info ("Info Recaute Index Method"); logger.warn ("Warn выполнить метод индекса"); logger.Error ("Метод индекса Execute Execute"); } вернуть "мое первое приложение Springboot"; }}Результаты бега
Журналы будут храниться в разных файлах в соответствии с разными уровнями. Когда размер файла журнала превышает 2 м, несколько файлов будут сжаты и сохранены. Рекомендуется отрегулировать размер файла журнала производственной среды до 20-50 МБ.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.