More .NET libraries
-
Rebex Total Pack
All Rebex .NET libraries together
Back to feature list...
Syslog client
On this page:
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:
- Octet-Counting: used by default.
-
Non-Transparent: requires message trailer to be used (default is
0x0A).
// 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 theSyslogMessage.Textproperty.
// 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...