[Spring Boot+LogBack] Эффективно записывайте журналы и реализуйте локализованное хранение файлов журналов!
[Spring Boot+LogBack] Эффективно записывайте журналы и реализуйте локализованное хранение файлов журналов!
🏆Эта статья включена в 《Spring Boo

Эта колонка посвящена созданию самой сложной серии обучающих материалов по Spring Boot, от нулевых до продвинутых серий обучающего контента. 🚀Все они запускаются исключительно во всей сети для создания высококачественных колонок. Колонка будет продолжать обновляться. ... Приглашаем всех подписаться и продолжать учиться.

Язык кода:javascript
копировать
Описание среды: Windows10 + Idea2021.3.2 + Jdk1.8 + SpringBoot 2.3.1.RELEASE

Предисловие

Журналы являются очень важной частью разработки. С помощью журналов мы можем устранять различные проблемы и оптимизировать программы. Весна Boot — очень популярная и удобная платформа, а Logback — очень зрелая и стабильная среда ведения журналов. В этой статье мы покажем, как использовать Spring Boot интегрирует Logback для реализации Сохранять файлы журналов локально。

краткое содержание

В этой статье будет описан способ использования Spring Загрузка и вход в Способы достижения Сохранять файлы журналов локально, сначала познакомьтесь с базовыми знаниями и использованием платформы Logback, а затем познакомьтесь с тем, как объединить Logback и Spring. Boot интегрирован и, наконец, демонстрирует, как использовать Logback для записи журналов и сохранения их в локальных файлах.

Logback

Logback — это зрелая и стабильная платформа ведения журналов, преемница платформы Log4j, с лучшей производительностью и более широкими возможностями конфигурации. Его можно интегрировать с инфраструктурой Spring Boot для вывода журналов на консоль или в файл.

Основные понятия Logback

Логбек состоит из трёх модулей:

  • logback-core: предоставляет функции нижнего уровня и самую простую систему журналирования.
  • logback-classic: предоставляет функции более высокого уровня, такие как реализация SLF4J API, и поддерживает MDC (сопоставленные диагностические контексты).
  • logback-access: предоставляет функции для журналов доступа HTTP, включая журналы доступа и журналы доступа HTTP на основе XML.

Logback использует Logger для записи и вывода журналов. LoggerContext является контейнером Logger и в основном поддерживает связь между Logger и Appender.

Appender используется для вывода логов в разные места, например, в консоль или файл.

Файл конфигурации журнала событий

Файл конфигурации журнала событийэтоXMLдокумент,Имя logback.xml.,По умолчанию он размещается в корневом каталоге пути к классам.

Вот простой пример logback.xml:

Язык кода:html
копировать
<?xml version="1.0" encoding="UTF-8"?>

<configuration>

  <!-- вывод на консоль -->
  <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>

  <!-- вывод в файл -->
  <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>log/demo.log</file>
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>log/demo.%d{yyyy-MM-dd}.log</fileNamePattern>
    </rollingPolicy>
  </appender>

  <!-- Установить уровень вывода журнала -->
  <root level="INFO">
    <appender-ref ref="console" />
    <appender-ref ref="file" />
  </root>

</configuration>

В файле конфигурации определены два Appender: один выводит данные на консоль, а другой — в файл. Атрибуту класса первого Appender присвоено значение ConsoleAppender, что означает, что журнал будет выводиться на консоль. Атрибуту класса второго Appender присвоено значение RollingFileAppender, что означает, что журнал будет выведен в файл. Среди них имя файла — log/demo.log, и файл журнала будет разделен по дате.

Уровень журнала журнала

Журнал журнала определяет пять уровней журнала: TRACE, DEBUG, INFO, WARN и ERROR, в порядке от низкого к высокому. В реальных приложениях соответствующий уровень журнала следует выбирать в соответствии с потребностями.

Интегрируйте Spring Boot и Logback

Spring Boot можно легко интегрировать с Logback. Вам нужно только добавить зависимость logback в файл pom.xml:

Язык кода:html
копировать
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-logging</artifactId>
  <version>2.5.2</version>
</dependency>

Примеры следующие:

Spring Boot по умолчанию использует Logback в качестве платформы ведения журналов, поэтому после добавления зависимости logback Spring Boot автоматически определит и загрузит файл logback.xml в пути к классам.

Использование Logback с Spring Boot

Использование Logback с Spring Boot очень простое.,Просто используйте Logger в коде для вывода журнала. LoggerFactory — это фабричный класс, предоставляемый Logback.,Может использоваться для получения экземпляров Logger.

Вот простой пример:

Язык кода:java
копировать
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Demo {

  private static final Logger logger = LoggerFactory.getLogger(Demo.class);

  public void test() {
    logger.info("Hello, world!");
  }

}

В приведенном выше коде мы определяем класс Demo и используем LoggerFactory для получения экземпляра Logger. В методе тестирования мы используем Logger для вывода журнала.

Настроить уровень журнала

По умолчанию уровень вывода журнала Spring Boot — INFO. Если вы хотите изменить уровень вывода журнала, вы можете добавить следующую конфигурацию в файл application.properties или application.yml:

Язык кода:text
копировать
logging.level.<package>=<level>

в,<package>Указывает имя пакета для установки уровня журнала.,<level>Указывает уровень журнала, который необходимо установить,Может быть TRACE, DEBUG, INFO, WARN, ERROR. Например,Чтобы установить уровень журнала в пакете org.springframework на DEBUG.,Вы можете добавить следующую конфигурацию:

Язык кода:text
копировать
logging.level.org.springframework=DEBUG

Сохранять файлы журналов локально

Помимо регистрациивывод на консольснаружи,Мы также можем сохранить журналы в файл. Вход в систему можно реализовать через FileAppender или RollingFileAppender.

FileAppender

FileAppender — это Appender, который выводит журналы в указанный файл. Вот пример FileAppender:

Язык кода:html
копировать
<appender name="file" class="ch.qos.logback.core.FileAppender">
  <file>logs/demo.log</file>
  <encoder>
    <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
  </encoder>
</appender>

В приведенном выше примере мы определили файл с именем Appender и сохранили журнал в файле logs/demo.log. Атрибут шаблона определяет формат вывода журнала.

RollingFileAppender

RollingFileAppender — это Appender, который разбивает файлы журналов по определенным правилам. Он может разделять файлы журналов по времени, размеру файла и другим правилам. Вот пример RollingFileAppender:

Язык кода:html
копировать
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <file>logs/demo.log</file>
  <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    <fileNamePattern>logs/demo.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
    <maxFileSize>10MB</maxFileSize>
    <maxHistory>30</maxHistory>
  </rollingPolicy>
  <encoder>
    <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
  </encoder>
</appender>

В приведенном выше примере мы определили файл с именем Appender и использовали SizeAndTimeBasedRollingPolicy для разделения файла журнала. Атрибут fileNamePattern определяет формат имени файла журнала %d{гггг-ММ-дд} указывает на разделение по дате, а %i указывает индексный номер файла (если размер файла превышает 10 МБ, он будет разделен на новые файлы). с индексными номерами Will +1). Атрибут maxFileSize определяет максимальный размер каждого файла журнала, а атрибут maxHistory определяет количество сохраняемых файлов журнала.

тестовый пример

Простой тестовый пример приведен ниже:

Язык кода:java
копировать
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class DemoApplication {

  private static final Logger logger = LoggerFactory.getLogger(DemoApplication.class);

  public static void main(String[] args) {
    logger.info("Hello, world!");
  }

}

Запуск теста После примера,Информация журнала будетвывод на консольиlogs/demo.logдокументсередина。

Краткое изложение полного текста

В этой статье представлен Весной Платформа ведения журналов Logback интегрирована в приложение Boot и реализована. файлы журналов локальный метод. Благодаря приведенной выше настройке и тестированию мы видим, что журналы приложений были успешно выведены в указанный каталог. Наконец, следует отметить, что при настройке файла При экспорте журнала вам необходимо оформить файл в соответствии с реальными потребностями. журналарезкаифайл журнала Сохраните настройку количества дней, иначе это может привести к тому, что место на системном диске будет занято слишком много.

Обо мне

👨‍🎓Автор:Bugger ✏️Блог: CSДН, копатьзолото、 infoQ、 51технический директор и т. д. 🎉Джейнмежду:CSDN|Алибаба Облако|Облако Huawei|51CTO и т. д. Эксперт по блогам сообщества, 30 лучших звезд блогов, копать Gold, 40 самых популярных авторов года, 12 лучших блоггеров года 51CTO, копать Gold | InfoQ | 51CTO и т. д.Высококлассные авторы в сообществе,Фанаты по всей сетиобщий15w+ публичный аккаунт Hardcore WeChat; 「Круг обезьян«Чудесный дом», добро пожаловать к вамприсоединения!Бесплатная шлюха последняяBATВопросы для собеседования в интернет-компании、4000G Электронные книги в формате PDF, шаблоны резюме и другие массивные материалы.

я участвуюНа втором этапе специального тренировочного лагеря Tencent Technology Creation 2023 года будут отмечены призовые эссе, которые разделят призовой фонд в 10 000 юаней и часы с клавиатурой.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose