Serilog Sink for RabbitMq
Using Nuget:
Install-Package Serilog.Sinks.RabbitMQ
To use with ILoggerFactory
via dependency injection,
add the following to ConfigureServices
in your Startup
class.
See the logging documentation
for specific help on using the ILoggerFactory
and ILogger<T>
.
using Serilog;
using Serilog.Formatting.Json;
using Serilog.Sinks.RabbitMQ;
using Serilog.Sinks.RabbitMQ.Sinks.RabbitMQ;
public class Startup
{
private readonly IConfiguration _config;
// ...
public IServiceProvider ConfigureServices(IServiceCollection services)
{
var config = new RabbitMQConfiguration
{
Hostname = _config["RABBITMQ_HOST"],
Username = _config["RABBITMQ_USER"],
Password = _config["RABBITMQ_PASSWORD"],
Exchange = _config["RABBITMQ_EXCHANGE"],
ExchangeType = _config["RABBITMQ_EXCHANGE_TYPE"],
DeliveryMode = RabbitMQDeliveryMode.Durable,
RouteKey = "Logs",
Port = 5672
};
Log.Logger = new LoggerConfiguration()
.Enrich.FromLogContext()
.WriteTo.RabbitMQ(config, new JsonFormatter())
.CreateLogger();
var loggerFactory = new LoggerFactory();
loggerFactory
.AddSerilog()
.AddConsole(LogLevel.Information);
services.AddSingleton<ILoggerFactory>(loggerFactory);
}
// ...
}