Мне нужно записывать события в syslog.
Я использую lo4j2 и syslog appender.
Блок добавления appender в log4j2.xml
выглядит следующим образом:
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<Syslog name="syslog" host="localhost" port="514" protocol="UDP" charset="ISO-8859-1">
</Syslog>
<RollingFile name="AppLog" fileName="/var/log/app.log"
filePattern="/var/log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy/>
</Policies>
</RollingFile>
</appenders>
Как вы можете видеть, у меня есть консольный appender и приложение RollingFile с определенным шаблономLayout. Я хочу использовать тот же PatternLayout для Syslog appender. Однако сообщения журнала в syslog, похоже, всегда используют предопределенный макет. Я попытался сделать следующее:
<Syslog name="syslog" host="localhost" port="514" protocol="UDP" charset="ISO-8859-1">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Syslog>
Но это не имеет никакого эффекта. сообщения syslog все еще имеют одинаковую форматированную форму.
Как определить формат сообщений журнала, которые входят в syslog?