Appearance
Настройка журналирования Java-приложения в Syslog и подсистему ЖУРНАЛЛИСТ
Java-приложения обычно используют логирующие фреймворки (Logback, Log4j, Log4j2, JUL). Для интеграции с подсистемой ЖУРНАЛЛИСТ возможны два основных подхода:
- прямая отправка в syslog через аппендеры
- запись в файл с последующей пересылкой через системный syslog (rsyslog / syslog-ng)
Общая схема
Java App:
- генерирует логи (события, ошибки, бизнес-операции)
- лог-фреймворк отправляет их в syslog или файл
- syslog пересылает сообщения в ЖУРНАЛЛИСТ
Варианты интеграции
1. Прямая отправка в syslog (рекомендуется для простых сценариев)
2. Через файл + syslog (рекомендуется для production)
Вариант 1. Logback → Syslog
Пример logback.xml
xml
<configuration>
<appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
<syslogHost>localhost</syslogHost>
<port>514</port>
<facility>LOCAL0</facility>
<suffixPattern>%date [%thread] %-5level %logger - %msg%n</suffixPattern>
</appender>
<root level="INFO">
<appender-ref ref="SYSLOG"/>
</root>
</configuration>Вариант 2. Log4j (legacy)
properties
log4j.appender.SYSLOG=org.apache.log4j.net.SyslogAppender
log4j.appender.SYSLOG.syslogHost=localhost
log4j.appender.SYSLOG.facility=LOCAL0
log4j.appender.SYSLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.SYSLOG.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
log4j.rootLogger=INFO, SYSLOGВариант 3. Log4j2 → Syslog
xml
<Appenders>
<Syslog name="Syslog" host="localhost" port="514"
protocol="UDP" facility="LOCAL0">
<PatternLayout pattern="%d [%t] %-5level %logger - %msg%n"/>
</Syslog>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Syslog"/>
</Root>
</Loggers>Вариант 4. Через файл (рекомендуется для production)
Пример logback
xml
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/var/log/myapp/app.log</file>
</appender>Настройка rsyslog
bash
# /etc/rsyslog.d/java-app.conf
input(type="imfile"
File="/var/log/myapp/*.log"
Tag="java-app"
Facility="local0")Пересылка в ЖУРНАЛЛИСТ
bash
local0.* @@journalist-server:514syslog-ng (альтернатива)
bash
source s_java {
file("/var/log/myapp/*.log");
};
destination d_journalist {
tcp("journalist-server" port(514));
};
log {
source(s_java);
destination(d_journalist);
};Вариант 5. Через stdout (контейнеры / systemd)
Если приложение пишет в stdout:
- systemd → journald
- journald → rsyslog
bash
module(load="imjournal")
if $programname == 'java-app' then @@journalist-server:514
& stopПроверка
- Проверить локальный лог:
bash
tail -f /var/log/myapp/app.log- Сгенерировать событие:
java
logger.info("Test message");- Убедиться, что событие появилось в ЖУРНАЛЛИСТ
Какие события попадают
- ошибки приложения
- бизнес-события
- операции API
- исключения (exceptions)
- события интеграций
Рекомендации
- использовать отдельный facility (local0–local7)
- избегать debug в production
- использовать TCP для передачи
- для production — использовать файл + syslog
Особенности Java-приложений
- высокая гибкость форматов логов
- большое количество событий
- важна структурированность (JSON/log pattern)
Когда использовать syslog
Рекомендуется:
- при централизованном мониторинге
- при микросервисной архитектуре
- для корреляции с инфраструктурой
Краткий вывод
Java-приложения легко интегрируются с подсистемой ЖУРНАЛЛИСТ через log-фреймворки и системный syslog. Это позволяет включить события приложений в единую систему анализа, выявления причин и автоматизации действий.