Microsoft.Extensions.Logging.RabbitMQ 1.1.9

Microsoft.Extensions.Logging.RabbitMQ

将 .NET 日志无缝集成到 RabbitMQ,实现日志的异步收集与分发。支持客户端日志推送与服务端日志消费,适用于分布式系统、微服务架构下的日志集中管理。


功能简介

  • 日志异步推送:将应用日志实时推送到 RabbitMQ 队列。
  • 服务端消费:通过实现接口,灵活处理和存储日志消息。
  • 高度可配置:支持 RabbitMQ 连接参数、路由、虚拟主机等多项配置。
  • 与 Microsoft.Extensions.Logging 完美集成:兼容 .NET 8,支持依赖注入与配置中心。
  • 自动重连机制:RabbitMQ 连接异常自动恢复,保障日志不中断。

安装方法

通过 NuGet 安装:

dotnet add package Microsoft.Extensions.Logging.RabbitMQ


快速开始

1. 客户端:日志推送

Program.csStartup.cs 中配置:

using Microsoft.Extensions.Logging;
builder.Services.AddLogging(option => {
    option.AddRabbitMQ(configure => {
        configure.HostName = "localhost";
        configure.Port = 5672;
        configure.UserName = "guest";
        configure.Password = "guest";
        configure.RouteKey = "logs";
        configure.Application = "Logging.RabbitMQ";
        configure.VirtualHost = "/";
        configure.AutomaticRecoveryEnabled = true;
    });
});
//如果项目中已经其他rabbitmq的配置,可以用以下方式添加
option.AddRabbitMQ(serverProvider => serverProvider.GetRequiredService<IConnectionFactory>(),routeKey:"Logging.RabbitMQ");

日志将自动推送到 RabbitMQ 指定队列。


2. 服务端:日志消费与处理

实现 IRabbitMQMessageHandler 接口,处理日志消息:

using Microsoft.Extensions.Logging.RabbitMQ.Handler;

public class MyLogHandler : IRabbitMQMessageHandler
{
    public Task HandleAsync(RabbitMQLoggerMessage message,CancellationToken cancellationToken = default)
    {
        // 处理日志消息,如写入数据库或文件
        // 消息序列化为 
        Console.WriteLine($"收到日志: {message}");
        return Task.CompletedTask;
    }
}
注册服务端日志处理:
builder.Services.AddLogging(option => {
    option.AddRabbitMQ<MyLogHandler>(configure => {
        configure.HostName = "localhost";
        configure.Port = 5672;
        configure.UserName = "guest";
        configure.Password = "guest";
        configure.RouteKey = "logs";
        configure.Application = "Logging.RabbitMQ";
        configure.VirtualHost = "/";
        configure.AutomaticRecoveryEnabled = true;
    });
    //如果项目中已经其他rabbitmq的配置,可以用以下方式添加
    option.AddRabbitMQ<RabbitMQMessageHandler>(serverProvider => serverProvider.GetRequiredService<IConnectionFactory>(), routeKey: "Logging.RabbitMQ");
});

主要优势

  • 解耦日志生产与消费:日志异步推送,消费端可独立扩展,支持多种存储方式。
  • 高可用性:自动重连机制,保障日志链路稳定。
  • 灵活扩展:只需实现接口即可自定义日志处理逻辑。
  • 配置简单:与 .NET 原生日志体系无缝集成,支持依赖注入。
  • 适用场景广泛:适合微服务、分布式系统、云原生应用等。

配置参数说明

参数 说明 示例值
HostName RabbitMQ 主机地址 localhost
Port RabbitMQ 端口 5672
UserName 用户名 guest
Password 密码 guest
RouteKey 路由键/队列名 logs
Application 应用标识 Logging.RabbitMQ
VirtualHost 虚拟主机 /
AutomaticRecoveryEnabled 自动重连 true

许可证

版权所有 © netor.me
本项目遵循 MIT 协议。


联系方式

  • 官网:netor.me
  • 邮箱:support@netor.me

No packages depend on Microsoft.Extensions.Logging.RabbitMQ.

添加连接工厂,使用servicekey 和系统其他消息队列分割开,默认:Logging.Rabbit 修复背景连接没有使用servicekey的错误 添加了性能优化 优化了对channel的使用,减少了channel的创建,使用依耐注入单列模式.

Version Downloads Last updated
1.2.1 16 11/22/2025
1.2.0 2 11/22/2025
1.1.9 2 11/22/2025
1.1.8 23 09/03/2025
1.1.7 9 09/02/2025
1.1.6 7 09/02/2025
1.1.5 9 08/29/2025
1.1.4 22 08/18/2025
1.1.3 7 08/18/2025
1.1.2 12 08/18/2025
1.1.1 9 08/18/2025
1.1.0 8 08/18/2025
1.0.9 6 08/18/2025