# Логирование
# Уровни логирования
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>