Rebex Syslog

Syslog client/server library for .NET

Download 30-day free trial Buy from $199
More .NET libraries

Back to feature list...

Syslog client

Sending syslog messages 

To send a syslog message, connect to a server and call the Send method:

// create a SyslogClient instance
using (var client = new Rebex.Net.SyslogClient())
{
    // connect to a syslog server
    client.Connect(hostname, port, SyslogTransportProtocol.Tcp);

    // send a message with default severity and facility
    client.Send("Hello from Rebex Syslog client.");

    // send a message with a specific severity and facility
    client.Send("Everything is working fine.",
        SyslogSeverity.Informational,
        SyslogFacility.User);
}
' create a SyslogClient instance
Using client = New Rebex.Net.SyslogClient()
    ' connect to a syslog server
    client.Connect(hostname, port, SyslogTransportProtocol.Tcp)

    ' send a message with default severity and facility
    client.Send("Hello from Rebex Syslog client.")

    ' send a message with a specific severity and facility
    client.Send("Everything is working fine.",
        SyslogSeverity.Informational,
        SyslogFacility.User)
End Using
Rebex Syslog supports three transport protocols: UDP, TCP, and TLS. For more information about TLS and certificate validation, see TLS/SSL and X.509 certificates.

Advanced syslog messaging 

Use SyslogMessage object to send messages with addition options:

// create and connect a SyslogClient instance
// ...

// prepare a syslog message
var message = new SyslogMessage();
message.Facility = SyslogFacility.System;
message.Severity = SyslogSeverity.Notice;
message.Hostname = "example.com";
message.ApplicationName = "Sample";
message.ProcessId = "123";
message.Text = "Hello from Rebex Syslog client.";

// send the message
client.Send(message);

// reuse message object
message.Text = "This is second message.";

// send updated message
client.Send(message);
' create and connect a SyslogClient instance
' ...

' prepare a syslog message
Dim message = New SyslogMessage()
message.Facility = SyslogFacility.System
message.Severity = SyslogSeverity.Notice
message.Hostname = "example.com"
message.ApplicationName = "Sample"
message.ProcessId = "123"
message.Text = "Hello from Rebex Syslog client."

' send the message
client.Send(message)

' reuse message object
message.Text = "This is second message."

' send updated message
client.Send(message)
Tip: A SyslogMessage instance can be reused for sending multiple messages with the same options.

SyslogMessage object also makes it possible to get a raw byte array representation of the message:

// get raw byte data of the syslog message
var rawData = message.Encode();

// work with the raw data
// for example: write it to a stream
stream.Write(rawData, 0, rawData.Length);
' get raw byte data of the syslog message
Dim rawData = message.Encode()

' work with the raw data
' for example: write it to a stream
stream.Write(rawData, 0, rawData.Length)

Message framing methods 

Syslog defines two framing methods for messages transmitted over TCP and TLS connections:

// create and connect a SyslogClient instance
// ...

// set the Non-Transparent-Framing
client.Settings.Framing = SyslogFraming.NonTransparent;

// set message trailer if needed
client.Settings.Trailer = new byte[] { 0x0D, 0x0A };

// send the message
client.Send("Hello from Rebex Syslog client.");
' create and connect a SyslogClient instance
' ...

' set the Non-Transparent-Framing
client.Settings.Framing = SyslogFraming.NonTransparent

' set message trailer if needed
client.Settings.Trailer = New Byte() {&HD, &HA}

' send the message
client.Send("Hello from Rebex Syslog client.")

Message formats 

Rebex Syslog supports 4 message formats, covered by the SyslogMessageFormat enumeration:

  • Modern - format defined in RFC 5424.
  • Bsd - format defined in RFC 3164.
  • Legacy - format for legacy Syslog systems, which uses <PRI> header, but other fields are unknown/undefined.
  • Plain - this does not use any header values. The whole message corresponds to the value of the SyslogMessage.Text property.
// create and connect a SyslogClient instance
// ...

// set the BSD Syslog message format
client.Settings.Format = SyslogMessageFormat.Bsd;

// send the message
client.Send("Hello from Rebex Syslog client.");
' create and connect a SyslogClient instance
' ...

' set the BSD Syslog message format
client.Settings.Format = SyslogMessageFormat.Bsd

' send the message
client.Send("Hello from Rebex Syslog client.")
Tip: The Legacy and Plain formats can be used to produce Syslog messages in any format. Just insert required header fields at the beginning of the SyslogMessage.Text property. For example:
// set format to Plain to send the message in custom format
client.Settings.Format = SyslogMessageFormat.Plain;

// prepare required custom headers
string headers = "[CUSTOM1] [CUSTOM2] %% ";

// send the message
client.Send(headers + "Hello from Rebex Syslog client.");
' set format to Plain to send the message in custom format
client.Settings.Format = SyslogMessageFormat.Plain

' prepare required custom headers
Dim headers = "[CUSTOM1] [CUSTOM2] %% "

' send the message
client.Send(headers + "Hello from Rebex Syslog client.")

Back to feature list...