Вход в систему ГЭЛФ
Приложение журнала для отправки сообщений GELF (расширенный формат журнала Graylog) без дополнительных зависимостей.
Функции
- UDP (с разделением на фрагменты)
- TCP (с шифрованием TLS или без него)
- HTTP(s)
- Сжатие GZIP и ZLIB (в режиме UDP и HTTP)
- Балансировка нагрузки на стороне клиента (циклический перебор)
- Пересылка MDC (сопоставленный диагностический контекст)
- Пересылка данных звонящего
- Пересылка статических полей
- Пересылка основной причины исключения
- Никаких зависимостей времени выполнения, кроме Logback.
Требования
- Ява 11
- Вход в систему 1.5.7
Примеры
Простая конфигурация UDP:
< configuration >
< appender name = " GELF " class = " de.siegmar.logbackgelf.GelfUdpAppender " >
< graylogHost >localhost</ graylogHost >
< graylogPort >12201</ graylogPort >
</ appender >
< root level = " debug " >
< appender-ref ref = " GELF " />
</ root >
</ configuration >
Простая конфигурация TCP:
< configuration >
< appender name = " GELF " class = " de.siegmar.logbackgelf.GelfTcpAppender " >
< graylogHost >localhost</ graylogHost >
< graylogPort >12201</ graylogPort >
</ appender >
<!-- Use AsyncAppender to prevent slowdowns -->
< appender name = " ASYNC GELF " class = " ch.qos.logback.classic.AsyncAppender " >
< appender-ref ref = " GELF " />
< neverBlock >true</ neverBlock >
</ appender >
< root level = " debug " >
< appender-ref ref = " ASYNC GELF " />
</ root >
</ configuration >
Простой TCP с настройкой TLS:
< configuration >
< appender name = " GELF " class = " de.siegmar.logbackgelf.GelfTcpTlsAppender " >
< graylogHost >localhost</ graylogHost >
< graylogPort >12201</ graylogPort >
</ appender >
<!-- Use AsyncAppender to prevent slowdowns -->
< appender name = " ASYNC GELF " class = " ch.qos.logback.classic.AsyncAppender " >
< appender-ref ref = " GELF " />
< neverBlock >true</ neverBlock >
</ appender >
< root level = " debug " >
< appender-ref ref = " ASYNC GELF " />
</ root >
</ configuration >
Простая конфигурация HTTP:
< configuration >
< appender name = " GELF " class = " de.siegmar.logbackgelf.GelfHttpAppender " >
< uri >https://my.server:12201/gelf</ uri >
</ appender >
<!-- Use AsyncAppender to prevent slowdowns -->
< appender name = " ASYNC GELF " class = " ch.qos.logback.classic.AsyncAppender " >
< appender-ref ref = " GELF " />
< neverBlock >true</ neverBlock >
</ appender >
< root level = " debug " >
< appender-ref ref = " ASYNC GELF " />
</ root >
</ configuration >
Более сложные примеры можно найти в каталоге примеров.
Конфигурация
Приложение
de.siegmar.logbackgelf.GelfUdpAppender
- GraylogHost : IP или имя хоста сервера Graylog. Если имя хоста разрешается в несколько IP-адресов, будет использоваться циклический перебор.
- GraylogPort : порт сервера Graylog. По умолчанию: 12201.
- maxChunkSize : Максимальный размер фрагментов GELF в байтах. Размер фрагмента по умолчанию равен 508 — это предотвращает фрагментацию IP-пакетов. Это также рекомендуемый минимум. Максимальный поддерживаемый размер фрагмента — 65 467 байт.
- compressMethod : используемый метод сжатия (NONE, GZIP или ZLIB). По умолчанию: GZIP.
- messageIdSupplier : механизм, предоставляющий уникальные идентификаторы сообщений, необходимые протоколу GELF UDP. По умолчанию:
de.siegmar.logbackgelf.MessageIdSupplier
. - энкодер : см. конфигурацию энкодера ниже.
de.siegmar.logbackgelf.GelfTcpAppender
- GraylogHost : IP или имя хоста сервера Graylog. Если имя хоста разрешается в несколько IP-адресов, будет использоваться циклический перебор.
- GraylogPort : порт сервера Graylog. По умолчанию: 12201.
- ConnectTimeout : Максимальное время (в миллисекундах) ожидания установления соединения. Значение 0 отключает тайм-аут соединения. По умолчанию: 15 000 миллисекунд.
- socketTimeout : Максимальное время (в миллисекундах) блокировки при чтении сокета. Значение 0 отключает таймаут сокета. По умолчанию: 5000 миллисекунд.
- reconnectInterval : интервал времени (в секундах) после закрытия и повторного открытия существующего соединения. Значение -1 отключает автоматическое переподключение. По умолчанию: 60 секунд.
- maxRetries : количество повторов. Значение 0 отключает повторные попытки. По умолчанию: 2.
- retryDelay : время (в миллисекундах) между повторными попытками. Игнорируется, если maxRetries равен 0. Значение по умолчанию: 3000 миллисекунд.
- PoolSize : количество одновременных TCP-соединений (минимум 1). По умолчанию: 2.
- PoolMaxWaitTime : максимальное время (в миллисекундах) ожидания доступности соединения из пула. Значение -1 отключает тайм-аут. По умолчанию: 5000 миллисекунд.
- PoolMaxIdleTime : максимальное время (в секундах), в течение которого соединение в пуле может простаивать, прежде чем оно будет считаться «устаревшим» и не будет использоваться повторно. Значение -1 отключает функцию максимального времени простоя. По умолчанию: -1 (отключено).
- энкодер : см. конфигурацию энкодера ниже.
de.siegmar.logbackgelf.GelfTcpTlsAppender
- Все из GelfTcpAppender
- insecure : если true, пропустите проверку сертификата TLS. Вы не должны использовать это в производстве! По умолчанию: ложь.
de.siegmar.logbackgelf.GelfHttpAppender
- uri : URI HTTP(s) сервера Graylog (например, https://my.server:12201/gelf).
- insecure : если true, пропустите проверку сертификата TLS. Вы не должны использовать это в производстве! По умолчанию: ложь.
- ConnectTimeout : Максимальное время (в миллисекундах) ожидания установления соединения. Значение 0 отключает тайм-аут соединения. По умолчанию: 15 000 миллисекунд.
- requestTimeout : Максимальное время (в миллисекундах) ожидания ответа. Значение 0 отключает тайм-аут. По умолчанию: 5000 миллисекунд.
- maxRetries : количество повторов. Значение 0 отключает повторные попытки. По умолчанию: 2.
- retryDelay : время (в миллисекундах) между повторными попытками. Игнорируется, если maxRetries равен 0. Значение по умолчанию: 3000 миллисекунд.
- compressMethod : используемый метод сжатия (NONE, GZIP или ZLIB). По умолчанию: GZIP.
- энкодер : см. конфигурацию энкодера ниже.
Кодер
de.siegmar.logbackgelf.GelfEncoder
- originHost : исходное имя хоста — будет определено автоматически, если не указано.
- includeRawMessage : если true, необработанное сообщение (с заполнителями аргументов) также будет отправлено. По умолчанию: ложь.
- includeKeyValues : если true, пары «ключ-значение» также будут отправлены. По умолчанию: правда.
- includeMarker : если true, маркеры журнала также будут отправлены. По умолчанию: ложь.
- includeMdcData : если true, ключи/значения MDC также будут отправлены. По умолчанию: правда.
- includeCallerData : если true, данные вызывающего абонента (исходный файл, метод, имя класса и строка) также будут отправлены. По умолчанию: ложь.
- includeRootCauseData : если true, исключение основной причины исключения, переданного с сообщением журнала, будет отображаться в полях root_cause_class_name и root_cause_message. По умолчанию: ложь.
- includeLevelName : если true, имя уровня журнала (например, DEBUG) также будет отправлено. По умолчанию: ложь.
- levelNameKey : ключ (т. е. имя поля), который следует использовать для имени уровня журнала. Это актуально только в том случае, если параметр includeLevelName имеет значение true. По умолчанию: имя_уровня.
- loggerNameKey : ключ (т. е. имя поля), который следует использовать для имени регистратора. По умолчанию: имя_регистратора.
- threadNameKey : ключ (т. е. имя поля), который следует использовать для имени потока. По умолчанию: имя_потока.
- AppendNewline : Если установлено значение true, в конце каждого сообщения будет добавлен системно-зависимый разделитель новой строки. Не используйте это вместе с приложением TCP/UDP/HTTP, так как это целесообразно только для ведения журнала консоли!
- shortMessageLayout : формат короткого сообщения. По умолчанию:
"%m%nopex"
. - fullMessageLayout : полный формат сообщения (Stacktrace). По умолчанию:
"%m%n"
. - NumbersAsString : регистрировать числа как строку. По умолчанию: ложь.
- staticFields : дополнительные статические поля для отправки в Graylog. По умолчанию: нет.
Поиск неисправностей
Если у вас возникли проблемы, включите режим отладки и проверьте логи.
< configuration debug = " true " >
...
</ configuration >