Конфигурация журнала SpringBoot по умолчанию
SpringBoot
Из коробки фреймворк логирования настроен под вас по умолчанию, используйтеCommons Logging
, но конфигурация по умолчанию также обеспечивает поддержку общих журналов, таких как: Java Util Logging, Log4J, Log4J2 и Logback. Каждый регистратор может быть настроен для использования содержимого журнала вывода консоли или файла.
консольный вывод
Что касается журнала журнала, сначала поговорим о 5 уровнях журнала LEVEL:
От высокого к низкомуERROR
,WARN
,INFO
,DEBUG
,TRACE
Низкоуровневые будут выводить высокоуровневую информацию, а высокоуровневые не будут выводить низкоуровневую. Например: уровень установлен наERROR
если,WARN
,INFO
,DEBUG
информация не будет выводиться.
существуетSpringBoot
настроен по умолчанию вERROR
,WARN
иINFO
уровень вывода журнала на консоль.
Нет в журналеFATAL
уровень, он будет рассматриваться какERROR
уровень, с которым нужно иметь дело.
Мы можем переключиться на уровень DEBUG двумя способами:
- Добавьте флаг --debug после запуска команды, например: $ java -jar myapp.jar --debug
- существует
application.properties
В конфигурации debug=true , когда для этого свойства установлено значение true, основной Logger (включая встроенный контейнер, hibernate, spring) будет выводить больше контента, но журнал вашего собственного приложения не будет выводиться как уровень DEBUG.
красочный вывод
SpringBoot
Вывод цветового журнала запускается с версии 1.4.0.
Если ваш терминал поддерживает ANSI, настройка цветного вывода сделает журнал более читабельным. вapplication.properties
установить вspring.output.ansi.enabled
параметры для поддержки.
-
NEVER
: отключить вывод в цвете ANSI (по умолчанию) -
DETECT
: Проверяет, поддерживает ли терминал ANSI, и если да, то использует цветной вывод (рекомендуется) -
ALWAYS
: Всегда используйте для вывода цветной формат ANSI.Если терминал не поддерживает его, будет много информации о помехах, что не рекомендуется.
выходной файл
SpringBoot
Конфигурация по умолчанию будет выводиться только на консоль и не будет записана в файл, но обычно нам нужно записать ее в файл при использовании в производственной среде.
Чтобы увеличить вывод файла, вам нужноapplication.properties
Средняя конфигурацияlogging.file
илиlogging.path
Атрибуты.
-
logging.file
: файл настроек, который может быть абсолютным или относительным путем. Например: logging.file=my.log -
logging.path
: Укажите каталог, в этом каталоге будет создан файл spring.log, и будет записано содержимое журнала, например: logging.path=/var/log
Файл журнала будет усечен, когда его размер составит 10 МБ, и будет создан новый файл журнала. Уровень по умолчанию: ОШИБКА, ПРЕДУПРЕЖДЕНИЕ, ИНФОРМАЦИЯ.
контроль уровня
существуетSpringBoot
нужно только вapplication.properties
Управление уровнем ведения журнала осуществляется в конфигурации.
Формат конфигурации: logging.level.*=LEVEL
-
logging.level
: префикс управления уровнем журнала, * — имя пакета или имя регистратора. -
LEVEL
: Опции TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF
Пример:
- logging.level.com.controller=DEBUG : все классы в пакете com.controller начинаются с
DEBUG
выходной уровень - logging.level.root=ПРЕДУПРЕЖДЕНИЕ: корневые журналы начинаются с
WARN
выходной уровень
Пользовательская конфигурация журнала
Если вы не хотите использовать конфигурацию по умолчанию, просто добавьте свой собственный файл конфигурации журнала.
Поскольку служба журнала обычноApplicationContext
Инициализирован перед созданием, он не должен проходитьSpring
управление конфигурационным файлом. Поэтому через системные свойства и традиционныеSpring Boot
Внешние файлы конфигурации по-прежнему могут хорошо поддерживать контроль журналов и управление ими.
В зависимости от системы логирования вы можете организовать имена конфигурационных файлов по следующим правилам, и они будут загружаться корректно:
- Журнал: logback-spring.xml, logback-spring.groovy, logback.xml, logback.groovy
- Log4j: log4j-spring.properties, log4j-spring.xml, log4j.properties, log4j.xml
- Log4j2: log4j2-spring.xml, log4j2.xml
- JDK (Java Util Logging): logging.properties
SpringBoot
Официальная рекомендация — использовать-spring
имя файла в качестве конфигурации вашего журнала (например, используйте logback-spring.xml вместо logback.xml )
Пользовательский формат вывода
существуетSpringBoot
вapplication.properties
Настройте следующие параметры для управления выходным форматом:
-
logging.pattern.console
: определяет стиль вывода на консоль (JDK Logger не поддерживается) -
logging.pattern.file
: определяет стиль вывода в файл (JDK Logger не поддерживается)
Также возможно определить эти форматы непосредственно в файле конфигурации журнала, а не в файле конфигурации приложения.
Общие шаблоны файлов конфигурации журнала
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_HOME" value="d:/logs"/>
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
<conversionRule conversionWord="wex"
converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wEx"
converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
<!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN"
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(--){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!-- Console 输出设置 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<!--<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>-->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<fileNamePattern>${LOG_HOME}/mixedSys.%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- 日志logger(包.类)的输出级别 -->
<logger name="org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver" level="DEBUG" >
<appender-ref ref="console" />
<appender-ref ref="file" />
</logger>
<logger name="org.springframework.boot" level="DEBUG"/>
<!-- 为 Hibernate sql 定制 -->
<!-- <logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE" />
<logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="DEBUG" />
<logger name="org.hibernate.SQL" level="DEBUG" />
<logger name="org.hibernate.engine.QueryParameters" level="DEBUG" />
<logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG" /> -->
<!-- 日志输出级别 -->
<root level="INFO"> <!-- 此时debug级别的信息会被过滤 -->
<appender-ref ref="console" />
<appender-ref ref="file" />
</root>
<!--日志异步到数据库 -->
<!-- <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
日志异步到数据库
<connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
连接池
<dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">
<driverClass>com.mysql.jdbc.Driver</driverClass>
<url>jdbc:mysql://127.0.0.1:3306/databaseName</url>
<user>root</user>
<password>root</password>
</dataSource>
</connectionSource>
</appender> -->
</configuration>