Это очень простой вопрос, но я не могу найти информацию.
(Возможно, мои знания о Java фреймворках сильно ограничены)
Как я могу установить уровень логирования в application.properties?
И расположение файла логирования и т.д.?
Обновление: Начиная с Spring Boot v1.2.0.RELEASE, применяются настройки в application.properties
или application.yml
. См. раздел Log Levels section справочного руководства.
logging.level.org.springframework.web: DEBUG
logging.level.org.hibernate: ERROR
Для более ранних версий Spring Boot это невозможно. Вы просто должны использовать обычную конфигурацию для вашего фреймворка логирования (log4j, logback) для этого. Добавьте соответствующий конфигурационный файл (log4j.xml
или logback.xml
) в каталог src/main/resources
и настройте его по своему вкусу.
Вы можете включить отладочное протоколирование, указав --debug
при запуске приложения из командной строки.
Spring Boot также предоставляет хорошую отправную точку для logback для настройки некоторых параметров по умолчанию, раскраски и т.д. файл base.xml, который вы можете просто включить в ваш файл logback.xml. (Это также рекомендуется из стандартного logback.xml в Spring Boot.
<include resource="org/springframework/boot/logging/logback/base.xml"/>
Вы можете сделать это, используя свой application.properties.
logging.level.=ERROR
-> Устанавливает уровень корневого логирования на ошибку
...
logging.level.=DEBUG
-> Устанавливает корневой уровень протоколирования на DEBUG
logging.file=${java.io.tmpdir}/myapp.log
-> Устанавливает абсолютный путь к файлу журнала в TMPDIR/myapp.log
Разумный набор свойств application.properties по умолчанию относительно логирования с использованием профилей был бы следующим:
application.properties:
spring.application.name=<your app name here>
logging.level.=ERROR
logging.file=${java.io.tmpdir}/${spring.application.name}.log
application-dev.properties:
logging.level.=DEBUG
logging.file=
Когда вы разрабатываете в вашей любимой IDE, вы просто добавляете -Dspring.profiles.active=dev
в качестве аргумента VM в конфигурацию запуска/отладки вашего приложения.
Это позволит вам вести журнал только ошибок в производстве и журнал отладки во время разработки БЕЗ записи результатов в файл журнала. Это улучшит производительность во время разработки (и сэкономит несколько часов работы SSD дисков ;)).
Правильный способ установить уровень root loging - это использовать свойство logging.level.root
. См. Документация, которая обновлялась с момента первоначального вопроса.
Пример:
logging.level.root=WARN
Предположим, ваше приложение имеет имя пакета как com.company.myproject
. Затем вы можете установить уровень регистрации для классов в вашем проекте, как указано ниже в файлах application.properties
loging.level.com.company.myproject = DEBUG
logging.level.org.springframework.web = DEBUG
и logging.level.org.hibernate = DEBUG
установят уровень ведения журнала для классов Spring Framework Web и только для Hibernate.
Для настройки местоположения файла регистрации используйте
loging.file = /home/ubuntu/myproject.log
Если вы находитесь в Spring Boot, вы можете напрямую добавить следующие свойства в файл application.properties , чтобы установить уровень ведения журнала настроить шаблон ведения журнала и хранить журналы во внешнем файле.
Это разные уровни ведения журнала и его порядок от минимума < < Максимум.
OFF < < ФАТАЛЬ < < ОШИБКА < < ПРЕДУПРЕЖДЕНИЕ < < < ДЕБУГ < < TRACE < < ВСЕ
# To set logs level as per your need.
logging.level.org.springframework = debug
logging.level.tech.hardik = trace
# To store logs to external file
# Here use strictly forward "/" slash for both Windows, Linux or any other os, otherwise, its won't work.
logging.file=D:/spring_app_log_file.log
# To customize logging pattern.
logging.pattern.file= "%d{yyyy-MM-dd HH:mm:ss} - %msg%n"
Пожалуйста, перейдите по этой ссылке, чтобы более ярко настроить свой журнал.
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html
Убедился, что совет Дэйва Сайера получил немного любви, потому что добавление debug=true
в application.properties действительно включит ведение журнала отладки.
Если вы хотите использовать другую структуру ведения журнала, например log4j, я обнаружил, что самый простой подход - отключить собственные журналы с пружинными ботинками и реализовать свои собственные. Таким образом, я могу настроить каждый уровень журнала в одном файле, log4j.xml (в моем случае), то есть.
Чтобы достичь этого, вам просто нужно добавить эти строки в ваш pom.xml:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
</dependency>
У вас, вероятно, уже есть первая зависимость, и вам нужны только две другие. Обратите внимание, что этот пример охватывает только log4j. Вот и все, теперь вы все настроены на настройку ведения журнала для загрузки в файле конфигурации log4j!
Для записей: официальная документация, как для Spring Boot v1.2.0.RELEASE и Spring v4.1.3.RELEASE:
Если единственное изменение, которое вам нужно внести в ведение журнала, - это установить уровни различных регистраторов, вы можете сделать это в application.properties, используя префикс «logging.level», например,.
logging.level.org.springframework.web: DEBUG
logging.level.org.hibernate: ОШИБКА
Вы также можете установить местоположение файла для входа (в дополнение к консоли), используя «logging.file».
Чтобы настроить более детализированные настройки системы ведения журнала, вам необходимо использовать собственный формат конфигурации, поддерживаемый рассматриваемой системой регистрации. По умолчанию Spring Boot выбирает собственную конфигурацию из своего местоположения по умолчанию для системы (например,. classpath: logback.xml для Logback), но вы можете установить местоположение файла конфигурации, используя свойство «logging.config».
Если вы хотите установить более подробную информацию, добавьте имя файла конфигурации журнала "logback.xml" или "logback-spring.xml".
в файле application.properties введите следующее:
logging.config: classpath:logback-spring.xml
в loback-spring.xml введите вот так:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<appender name="ROOT_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<file>sys.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_DIR}/${SYSTEM_NAME}/system.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>500MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%-20(%d{yyy-MM-dd HH:mm:ss.SSS} [%X{requestId}]) %-5level - %logger{80} - %msg%n
</pattern>
</encoder>
</appender>
<appender name="BUSINESS_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>TRACE</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<file>business.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_DIR}/${SYSTEM_NAME}/business.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>500MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%-20(%d{yyy-MM-dd HH:mm:ss.SSS} [%X{requestId}]) %-5level - %logger{80} - %msg%n
</pattern>
</encoder>
</appender>
<logger name="{project-package-name}" level="TRACE">
<appender-ref ref="BUSINESS_APPENDER" />
</logger>
<root level="INFO">
<appender-ref ref="ROOT_APPENDER" />
</root>
</configuration>
Существующие ответы велики. Я просто хочу поделиться с вами новой функцией загрузки пружины, позволяющей группировать журналы и устанавливать уровень ведения журнала во всей группе.
Пример из документов:
loging.group.tomcat = org.apache.catalina, org.apache.coyote, org.apache.tomcat
loging.level.tomcat = TRACE
Это хорошая особенность, которая приносит больше гибкости.
В случае затмения IDE и вашего проекта maven, не забудьте очистить и построить проект, чтобы отразить изменения.
в весеннем загрузочном проекте мы можем написать loging.level.root = WARN, но здесь проблема, мы должны перезапустить снова, даже если мы добавили зависимость devtools, в файле свойств, если мы модифицируем какое-либо значение, не будет автоматически определено, для этого ограничения я узнал решение i,e мы можем добавить привод в pom.xml и пройти уровень регистратора, как показано ниже в postman clientв баре URL http://localhost:8080/loggers/ROOT или http://localhost:8080/loggers/
{
"configuredLevel":null
effectiveLevel":"WARN"
}