【发布时间】:2017-04-28 05:27:44
【问题描述】:
所以,我正在努力解决这个问题。 我有 Serilog 并使用 EventHub 记录错误。 花了一段时间才找到,但我需要将它序列化为 JSON,所以我使用了这个:
logger = new LoggerConfiguration().WriteTo.Sink(new AzureEventHubSink(eventHubClient, new JsonFormatter()))
.CreateLogger();
太好了。现在,当我编写异常时:
logger.Error(ex, "An Error Occurred");
它写了但异常写在 1 个字段中(大长强)。
有没有办法告诉 SeriLog 将异常的每个属性写入自己的字段中(将其视为带有字段的 SQL 表)?
改变 outputTemplate 但仍然使用 JsonFormatter 怎么样,因为没有过载来接受输出模板?
我正在使用流分析进行一些查询,它使每个异常属性作为其自己的字段列而不是一个包含整个 JSON 字符串的字段变得更好(更好),我需要交叉连接另一个数据源。
谢谢。
【问题讨论】:
-
你想要这些列在哪里?本质上,事件中心消息只是一个带有一些元数据的字节数组。由客户来正确解释它。
-
我理解,但 SA 本质上是从 EH 获取数据,只是吐出其中找到的列/道具并显示它。因此,当我执行 SELECT * FROM - 它向我显示来自 SeriLog 的列,如时间戳、级别、消息模板等......但除此之外,我想将每个异常属性添加到旁边的列列表中,然后说“消息模板”或甚至至少将“ClassName”作为自己的合法列。您可以修改 outputTemplate 格式,但似乎无法通过 JSON 格式化程序重载来做到这一点。 SeriLog 只是将异常序列化到它自己的字段中——我不希望这样。想要每个字段
标签: json azure-eventhub serilog