Fluentd client for C# and VB.NET that is thin and simple.
Currently, it supports TCP connection only.
from NuGet - FluentdClient.Sharp
PM > Install-Package FluentdClient.SharpAt first, you must create an instance of FluentdClient, with giving the informations of fluentd server(host and port) and the serializer(messagepack formatted), or the instance of FluentdSetting including those.
Next, you can connect to fluetnd server with calling ConnectAsync method.
Finally, you can send a message to fluentd server to call SendAsync method.
(If you don't call ConnectAsync method before, FluetndClient calls it automatically.)
using (var client = new FluentdClient("172.0.0.1", 24224, new MsgPackSerializer()))
{
await client.ConnectAsync();
// send a simple message.
await client.SendAsync("tag.simple", "hello fluentd.");
// send a structured message.
await client.SendAsync("tag.structured", new { MachineName = Environment.MachineName });
}If you use FluentdSetting when you create the instance of FluentdClient, you can set the timeout and how to handle exceptions when sending messages to fluentd server.
var setting = new FluentdSetting("172.0.0.1", 24224, new MessagePackSerializer());
// set timeout(ms)
setting.Timeout = 5000;
// set how to handle exception
setting.ExceptionHandler = new Action<Exception>(ex => Console.WriteLine(ex));
using (var client = new FluentdClient(setting))
{
// …
}You can choice the serialization libraries, MsgPack-Cli or MessagePack for C#.
MsgPack-Cli is the standard MessagePack library for .NET, that is included in msgpack Github repository.
MessagePack for C# is the extreamly fast MessagePack library for .NET, and faster than other binary / JSON format serializers.
You can get implemented libraries from NuGet.
- FluentdClient.Sharp.MsgPack (Using MsgPack-Cli inner.)
- FluentdClient.Sharp.MessagePack (Using MessagePack for C# inner.)
PM > FluentdClient.Sharp.MsgPack
PM > FluentdClient.Sharp.MessagePackBoth can be injected the custom serialization setting when creating instances.
MsgPackSerializer(implementation of MsgPack-Cli) recieves a instance of SerializationContext. You can see about SerializationContext here.
If you don't give a instance of SerializationContext, SerializationContext.Default is given.
var context = new SerializationContext();
var serializer = new MsgPackSerializer(context);MessagePackSerializer(implementation of MessagePack for C#) recieves a instance of IMessagePackFormatterResolver. You can see about IMessagePackFormatterResolver here.
If you don't give a instance of IMessagePackFormatterResolver, TypelessContractlessStandardResolver.Instance is given.
MultipleFormatterResolver is used inner actually because it includes PayloadFormatterResolver that resolves the format of Payload(message class) and UnixTimestampFormatterResolver that resolves the format of DateTime and DateTimeOffset as UnixTimestamp.
var serializer = new MessagePackSerializer(StandardResolver.Instance);under MIT Lisence