IT-notes     О блоге     Архив записей

Logback: Настройка вывода в файл

Для возможности вывода логов в файл создаем файловый appender в файле logback-prod.xml:

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">  
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
	    <fileNamePattern>${logDir}/${springAppName}_%d{yyyy-MM-dd}_%i.log</fileNamePattern>  
	    <maxHistory>${maxHistory}</maxHistory>  
	    <totalSizeCap>${totalSizeCap}</totalSizeCap>  
	      
	    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">  
		    <maxFileSize>${maxFileSize}</maxFileSize>  
	    </timeBasedFileNamingAndTriggeringPolicy>  
    </rollingPolicy>  
      
    <encoder>  
	    <charset>UTF-8</charset>  
	    <pattern>${filePattern}</pattern>  
    </encoder>  
</appender>

В настройках этого appender участвуют springProperty, которые указываются в репозитории конфигурационных файлов:

<springProperty name="springAppName" source="spring.application.name"/>  
<springProperty name="logDir" source="logging.logDir"/>  
<springProperty name="totalSizeCap" source="logging.totalSizeCap"/>  
<springProperty name="maxHistory" source="logging.maxHistory"/>  
<springProperty name="maxFileSize" source="logging.maxFileSize"/>  
<springProperty name="filePattern" source="logging.filePattern"/>

application.yml:

#######################################################  
# Конфигурирование логирования  
######################################################  
logging:  
config: classpath:logback-prod.xml  
# Каталог для хранения логов  
logDir: D:/LOGS  
# История в днях, максимальный объем логов распространяется на количество дней  
maxHistory: 30  
# Максимальный размер логов  
totalSizeCap: 40KB  
# Максимальный размер одного файла  
maxFileSize: 15KB  
# Шаблон выводимой информации  
filePattern: "%d %-4relative [%thread] %-5level %logger{35} - %msg%n"

Настраиваемые для логирования свойства:

  • logging.config – имя и расположение конфигурационного файла logback.
  • logging.logDir – абсолютный путь к каталогу, где размещаются конфигурационные файлы.
  • logging.maxHistory – количество дней, в которых хранится история, при условии, что не достигнуты другие предельные величины для логов (общий размер файлов). Максимальный объем логов распространяется на заданное количество дней.
  • logging.totalSizeCap – максимальный размер всех лог-файлов для сервиса.
  • logging.maxFileSize – максимальный размер одного лог-файла.
  • logging.filePattern - шаблон выводимой информации в логе.

Очищение старых логов происходит в момент, когда создается новый лог-файл, так у предыдущего превышен размер, заданный в параметре maxFileSize. В этот момент происходит проверка, что общий объем логов за число дней в maxHistory не превышает объем, указанный в totalSizeCap. Если условие проверки выполняется, очищаются лишние логи в пределах дней maxHistory до объема totalSizeCap. Поэтому, если мы хотим подчищать хвосты от логов, которые остались в периоды простоя сервсиов необходимо расширить количество дней в maxFileSize.

По предварительным настроенным параметрам хранение логов выглядит так:

logs

Пример проекта.