将对象作为json发送到Sentry.io

问题描述

我们在我们的网站上使用Sentry.AspNetCore NuGet程序包,并且在这里和那里注入ILogger<T>。 有什么方法可以使用“结构化日志记录语法”并使Sentry日志对象成为JSON,而不仅仅是调用ToString()

_logger.LogError("testObj = {@testObj}",new TestClass());
// (The @ forces NLog to serialize object as JSON. Looks like it's used in some of the other logging frameworks as well.)

public class TestClass
{
    public string SomeProp { get; } = "SomeValue";
    public int AnotherProp { get; } = 1337;
}

// Preferred message: testObj = {"SomeProp":"SomeValue","AnotherProp":1337}
// Actual Message: testObj = MyNameSpace.TestClass

编辑:
一些澄清。我们仍然使用NLog写入文件,我们只是在UseSentry中添加了Program.cs,并保持了所有ILogger<T>的用法。除了Sentry(?)仅使用ToString来序列化传递给消息字符串的对象之外,它的工作符合预期。
解决此问题的方法可能是以某种方式将自定义格式化程序注入Sentry记录器。否则,我们将不得不重写可能要记录的每个类上的ToString,或者在记录时自行添加序列化或创建匿名对象。

(记录匿名对象“有效”,因为编译器生成了一个自定义.ToString()覆盖,该覆盖列出了所有属性及其字符串值。 例如:https://sharplab.io/#v2:EYLgxg9gTgpgtADwGwBYA+ABATARgLABQGAzAATakDCpA3oaQ+WRiqQLIAUAlLfY/wDcAhlFIJSAXlIA7GAHdapACowAzgBdJpAETq167aQC+Abj4MjhI0A=

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)