# Логирование
# Уровни логирования
OFF— логирование в файл или STDOUT выключено.ERROR— серьезные ошибки. Необходимо изучить эти сообщения.WARN— предупреждения. Нода может продолжать работу, но рекомендуется обратить внимание на какую-то проблему.INFO— важные сообщения. Система работает нормально.DEBUG- информация для отладки.TRACE- информация для отладки, когда уровня DEBUG недостаточно (редкие случаи).
Низкие уровни логирования включают в себя более высокие. Например, DEBUG включает все более высокие уровни: INFO, WARN и ERROR.
# О платформе
Ноды Waves используют для логирования платформу logback. Нода поставляется с настройками логирования. См. стандартный файл logback.xml в качестве примера.
По умолчанию все логи пишутся в читаемом формате:
- В STDOUT с уровнем
INFO. - В файл
/var/log/waves/waves.logдля Mainnet нод, установленных из DEB-пакета (/var/log/waves-testnet/waves.logи/var/log/waves-stagenet/waves.logдля Testnet и Stagenet), или${waves.directory}/logs/waves.logдля других нод. До версии ноды 1.1.6 уровень логирования по умолчанию былTRACE. После выхода версии 1.1.6 уровень по умолчанию сталDEBUG: это означает, что UTX-трейсы не включены, что позволяет уменьшить объем логов, производимых нодой при высокой нагрузке. Можно включить запись UTX-трейсов в отдельный файл. Кроме ежедневной ротации, предусмотрена ротацияwaves.logпо размеру файла, когда размер файла достигает заданного значения (по умолчанию 100 Мбайт).
Для логирования предусмотрены следующие ограничения:
- Логи старше 30 дней удаляются.
- Если суммарный размер логов станет больше 1 Гбайт, самые старые логи будут удаляться в соответствии с лимитом.
Можно изменить следующие настройки логирования:
- активировать UTX-трейсы;
- изменить расположение лог-файла;
- изменить уровень логирования в STDOUT;
- активировать логирование в формате JSON.
За исключением активации логирования в формате JSON, измененить параметры логирования можно следующими способами:
- Добавление параметров в файл
application.ini. - Добавление параметров в файл
logback.xml. Чтобы изменить настройки ноды вlogback.xml, создайте свой собственныйlogback.xmlв папке/etc/waves/. Подробнее в подразделе Изменить настройки логирования в файле logback.xml. - Выполнения команд в командной строке.
Логирование в формате JSON может быть активировано только в файле logback.xml.
Не нужно перезапускать ноду после изменения настроек логирования, так как изменения применяются автоматически каждые 30 секунд.
Уровни логирования описаны в подразделе Уровни логирования.
# Изменить настройки логирования в файле logback.xml
Для изменения настроек логирования ноды в файле logback.xml:
- Создайте свой файл
/etc/waves/logback.xml. - Добавьте в файл параметры в тегах
included.
Следующий пример кода можно использовать для включения уровня логирования TRACE:
<included>
<property name="logback.file.level" value="TRACE"/>
</included>
Примечание. Не нужно перезапускать ноду после изменения настроек логирования, так как изменения применяются автоматически каждые 30 секунд.
# Активировать UTX-трейсы
Если UTX-трейсы активированы, то выходные данные будут записаны в файл /var/log/utx-trace.log.
Если нода была установлена из DEB-пакета, используйте файл application.ini или logback.xml.
Если нода была запущена из JAR-файла, используйте опцию Java.
# Активировать в application.ini
В файле application.ini добавьте:
-J-Dlogback.utx-trace.enabled=true
# Активировать в logback.xml
В файле logback.xml добавьте:
<included>
<property name="logback.utx-trace.enabled" value="true" />
</included>
# Активировать через командную строку
Используйте опцию Java:
java -Dlogback.utx-trace.enabled=true -jar /path/to/waves-all.jar /path/to/config`
# Изменить расположение лог-файла
По умолчанию лог-файл расположен в папке: /var/log.
Если нода была установлена из DEB-пакета, используйте файл application.ini или logback.xml.
Если нода была установлена из JAR-файла, используйте опцию Java.
# Изменить в application.ini
В файле application.ini добавьте:
-J-Dlogback.file.directory=/path/to/directory/for/logs
# Изменить в logback.xml
В файле logback.xml добавьте:
<included>
<property name="logback.file.final-directory" value="/path/to/directory/for/logs" />
</included>
# Изменить через командную строку
Используйте опцию Java:
java -Dlogback.file.directory=/path/to/directory/for/logs -jar /path/to/waves-all.jar /path/to/config`
# Задать уровень логирования для STDOUT
По умолчанию уровень логирования в STDOUT — INFO.
Если нода была установлена из DEB-пакета, используйте файл application.ini или logback.xml.
Если нода была установлена из JAR-файла, используйте опцию Java.
Уровни логирования описаны в подразделе Уровни логирования.
# Изменить в application.ini
В файле application.ini добавьте:
-J-Dlogback.file.directory=/path/to/directory/for/logs
# Изменить в logback.xml
В файле logback.xml добавьте:
<included>
<property name="logback.file.directory=/path/to/directory/for/logs" value="true" />
</included>
# Изменить через командную строку
Используйте опцию Java:
java -Dlogback.file.directory=/path/to/directory/for/logs -jar /path/to/waves-all.jar /path/to/config
# Включить логирование в формате JSON
Если вы используете инструменты для анализа JSON, вам нужно включить вывод логов в формате JSON.
В файле logback.xml добавьте:
<included>
<property name="logback.file.enabled" value="false"/>
<appender name="JSON" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logback.file.final-directory}/waves-elk.json</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>${logback.file.final-directory}/waves-elk.json.%d{yyyy-MM-dd, UTC}.%i.gz</fileNamePattern>
<maxFileSize>1GB</maxFileSize>
<maxHistory>3</maxHistory>
<totalSizeCap>2GB</totalSizeCap>
</rollingPolicy>
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<timestamp>
<pattern>yyyy-MM-dd'T'HH:mm:ss.SSS</pattern>
<timeZone>UTC</timeZone>
</timestamp>
<version/>
<message/>
<loggerName/>
<threadName/>
<logLevel/>
<logLevelValue/>
<stackTrace/>
<stackHash/>
</providers>
</encoder>
</appender>
<root>
<appender-ref ref="JSON"/>
</root>
</included>