/syslogappender

Syslog appender for logback with full rfc 5424 support

Primary LanguageJavaGNU Lesser General Public License v3.0LGPL-3.0

Syslog appender for logback with full RFC-5424 support

syslogappender

A Logback appender that leverages [syslog4j][] to send log messages to remote systems via syslog compatible to RFC-5424 format.

Why?

The existing syslog appender for Logback only provides the ability to send messages via UDP. Using syslog-java-client allows us to send messages via TCP and optionally to encrypt them by sending over TCP with TLS. This library also take care of adding message length as per RFC-5424 so log lines containing new lines work correctly.

How?

Setup using https://bintray.com/serioussam/oss/com.github.serioussam%3Asyslogappender Add this to your pom.xml:

    <dependency>
      <groupId>com.github.serioussam</groupId>
      <artifactId>syslogappender</artifactId>
      <version>1.0.0</version>
    </dependency>

Then add the appender to your logback.xml.

If not using Maven, download [logback-syslog4j-1.0.0.jar][] and the latest [syslog4j][] JAR. Place these files in the classpath, in addition to Logback itself.

Logging via TCP with TLS (recommended)

  <appender name="SYSLOG-TLS" class="com.github.serioussam.syslogappender.SyslogAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
      <pattern>%date %-5level %logger{35} - %message%n</pattern>
    </layout>

    <syslogConfig class="SyslogConfig">
      <!-- remote system to log to -->
      <host>localhost</host>
      <!-- remote port to log to -->
      <port>514</port>
      <!-- program name to log as -->
      <programName>java-app</programName>
      <!-- protocol TCP_TLS -->
      <protocol>TCP_TLS</protocol>
    </syslogConfig>
  </appender> 

  <root level="DEBUG">
    <appender-ref ref="SYSLOG-TLS" />
  </root>

Logging via TCP

  <appender name="SYSLOG-TCP" class="com.github.serioussam.syslogappender.SyslogAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
      <pattern>%date %-5level %logger{35} - %message%n</pattern>
    </layout>

    <syslogConfig class="SyslogConfig">
      <!-- remote system to log to -->
      <host>localhost</host>
      <!-- remote port to log to -->
      <port>514</port>
      <!-- program name to log as -->
      <programName>java-app</programName>
      <!-- protocol TCP -->
      <protocol>TCP</protocol>
    </syslogConfig>
  </appender> 

  <root level="DEBUG">
    <appender-ref ref="SYSLOG-TCP" />
  </root>

Logging via UDP

  <appender name="SYSLOG-UDP" class="com.github.serioussam.syslogappender.SyslogAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
      <pattern>%date %-5level %logger{35} - %message%n</pattern>
    </layout>

    <syslogConfig class="SyslogConfig">
      <!-- remote system to log to -->
      <host>localhost</host>
      <!-- remote port to log to -->
      <port>514</port>
      <!-- program name to log as -->
      <programName>java-app</programName>
      <!-- protocol UDP -->
      <protocol>UDP</protocol>
    </syslogConfig>
  </appender> 

  <root level="DEBUG">
    <appender-ref ref="SYSLOG-UDP" />
  </root>