[[Syslog-SyslogDataFormat]]
Syslog DataFormat
~~~~~~~~~~~~~~~~~

*Available as of Camel 2.6*

The *syslog* dataformat is used for working with
http://www.ietf.org/rfc/rfc3164.txt[RFC3164] and RFC5424 messages.

This component supports the following:

* UDP consumption of syslog messages
* Agnostic data format using either plain String objects or
SyslogMessage model objects.
* link:type-converter.html[Type Converter] from/to SyslogMessage and
String
* Integration with the link:mina.html[camel-mina] component.
* Integration with the link:netty.html[camel-netty] component.
* *Camel 2.14:* Encoder and decoder for
the link:netty.html[camel-netty] component.
* *Camel 2.14:* Support for RFC5424 also.

Maven users will need to add the following dependency to their `pom.xml`
for this component:

[source,xml]
------------------------------------------------------------
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-syslog</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
------------------------------------------------------------

[[Syslog-RFC3164Syslogprotocol]]
RFC3164 Syslog protocol
^^^^^^^^^^^^^^^^^^^^^^^

Syslog uses the user datagram protocol (UDP)
https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=CAMEL&title=1&linkCreation=true&fromPageId=24185759[1]
as its underlying transport layer mechanism.  
The UDP port that has been assigned to syslog is 514.

To expose a Syslog listener service we reuse the existing
link:mina.html[camel-mina] component or link:netty.html[camel-netty]
where we just use the `Rfc3164SyslogDataFormat` to marshal and unmarshal
messages. Notice that from *Camel 2.14* onwards the syslog dataformat is
renamed to `SyslogDataFormat`.

[[Syslog-Dataformat-Options]]
Options
^^^^^^^

// dataformat options: START
The Syslog dataformat has no options.
// dataformat options: END

[[Syslog-RFC5424Syslogprotocol]]
RFC5424 Syslog protocol
^^^^^^^^^^^^^^^^^^^^^^^

*Available as of Camel 2.14*

To expose a Syslog listener service we reuse the
existing link:mina.html[camel-mina] component
or link:netty.html[camel-netty] where we just use
the `SyslogDataFormat` to marshal and unmarshal messages

[[Syslog-ExposingaSysloglistener]]
Exposing a Syslog listener
++++++++++++++++++++++++++

In our Spring XML file, we configure an endpoint to listen for udp
messages on port 10514, note that in netty we disable the defaultCodec,
this  +
 will allow a fallback to a NettyTypeConverter and delivers the message
as an InputStream:

[source,xml]
------------------------------------------------------------------------------------------
<camelContext id="myCamel" xmlns="http://camel.apache.org/schema/spring">

    <dataFormats>
          <syslog id="mySyslog"/>
    </dataFormats>

    <route>
          <from uri="netty:udp://localhost:10514?sync=false&amp;allowDefaultCodec=false"/>
          <unmarshal ref="mySyslog"/>
          <to uri="mock:stop1"/>
    </route>

</camelContext>
------------------------------------------------------------------------------------------

The same route using link:mina.html[camel-mina]

[source,xml]
-------------------------------------------------------------------------
<camelContext id="myCamel" xmlns="http://camel.apache.org/schema/spring">

    <dataFormats>
          <syslog id="mySyslog"/>
    </dataFormats>

    <route>
          <from uri="mina:udp://localhost:10514"/>
          <unmarshal ref="mySyslog"/>
          <to uri="mock:stop1"/>
    </route>

</camelContext>
-------------------------------------------------------------------------

[[Syslog-Sendingsyslogmessagestoaremotedestination]]
Sending syslog messages to a remote destination
+++++++++++++++++++++++++++++++++++++++++++++++

[source,xml]
-------------------------------------------------------------------------
<camelContext id="myCamel" xmlns="http://camel.apache.org/schema/spring">

    <dataFormats>
        <syslog id="mySyslog"/>
    </dataFormats>

    <route>
        <from uri="direct:syslogMessages"/>
        <marshal ref="mySyslog"/>
        <to uri="mina:udp://remotehost:10514"/>
    </route>

</camelContext>
-------------------------------------------------------------------------

[[Syslog-SeeAlso]]
See Also
^^^^^^^^

* link:configuring-camel.html[Configuring Camel]
* link:component.html[Component]
* link:endpoint.html[Endpoint]
* link:getting-started.html[Getting Started]

