首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将Serilog数据发送到日志服务?

如何将Serilog数据发送到日志服务?
EN

Stack Overflow用户
提问于 2022-02-14 14:44:04
回答 2查看 279关注 0票数 -1

我需要通过RabbitMQ通道将Serilog日志数据从服务器A发送到服务器B。为此,我在服务器A上创建一个serilog自定义接收器来发送数据。问题在于它应该如何发送这些数据,这样服务器B就可以轻松地用Serilog重新记录它到外部日志服务,并保持结构日志记录完整。

服务器A上的日志代码可能如下所示:

代码语言:javascript
运行
复制
var position = new { Latitude = 25, Longitude = 134 };
var elapsedMs = 34;

log.Information("Processed {@Position} in {Elapsed:000} ms.", position, elapsedMs);

然后由Serilog将其打包到一个LogEvent对象中,然后发送到接收器:

我简单的水槽看起来可能是这样的:

代码语言:javascript
运行
复制
    public class MySink : ILogEventSink
{
    private readonly IFormatProvider _formatProvider;

    public MySink(IFormatProvider formatProvider)
    {
        _formatProvider = formatProvider;
    }

    public void Emit(LogEvent logEvent)
    {
        //Sending logEvent over MQ
    }
}

我如何将这个LogEvent发送到服务器b,在那里我只需要重新登录到Serilog,并且仍然保留结构日志记录而不丢失任何数据?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-08 09:50:39

经过一些研究后,我找到了将Serilog Serilog.Formatting.Compact NuGet转换成紧凑的JSON字符串的LogEvent。然后可以将此JSON字符串读入带有LogEvent的Serilog 塞里罗格格式-紧凑阅读器NuGET中。经过一些测试,我可以得出结论,这是很好的工作。

可能有JSON灭菌器无法处理的类型,但我还没有找到任何类型。

票数 0
EN

Stack Overflow用户

发布于 2022-10-20 06:25:50

试着看看这个项目,这正是您想要的:日志服务器

在这里,你也会发现RabbitMQ的沉没。

在我的项目中,您会发现以下内容:

  1. 服务器作为RabbitMQ消息的简单使用者

由来自这是LogEventHandler队列的每个新消息触发的RabbitMQ。

  1. Serilog.Sinks.RabbitMQ作为消息发布服务器

这是核心在RabbitMQ接收器中发布消息。

在我的例子中,我不使用json格式,但是我使用了更紧凑的protobuf二进制序列化。

这是自述中,您可以找到有关如何使用此日志系统的更多详细信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71113693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档