【发布时间】:2020-02-25 22:47:12
【问题描述】:
我正在尝试设置一个 ASP.NET Core 3.1 Web API 来使用 Serilog v2.9 和 Serilog.Sinks.Elasticsearch v8.0.1 测试 elk 堆栈。这对我来说是全新的,我只是想弄清楚。我似乎一切正常,可以整天记录简单的事情,并在 ES 和 Kibana 中看到它们。麻烦的是,除了匿名类型之外,我似乎无法解构任何东西。举例说明:
var data = new
{
SampleData = "Hello World!"
};
_logger.LogInformation("Destructured anonymous object: {@data}", data);
产生预期的结果。一个漂亮的闪亮日志条目,对象“数据”完美序列化。鉴于:
var test = new TestClass
{
Guid = Guid.NewGuid(),
Timestamp = DateTime.UtcNow,
Title = "Testing this serialization!"
};
_logger.LogInformation("Destructred discrete type. {@test}", test);
什么都不生产。也不例外,在 ElasticSearch 中没有条目。没有。 TestClass 是一个简单的类,只有这 3 个属性,所有这些属性都应该可以序列化。我想不通。这是我的记录器配置:
Log.Logger = new LoggerConfiguration()
.Enrich.FromLogContext()
.Enrich.WithExceptionDetails()
.WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri(elasticUri))
{
AutoRegisterTemplate = true,
AutoRegisterTemplateVersion = AutoRegisterTemplateVersion.ESv6,
CustomFormatter = new ExceptionAsObjectJsonFormatter(renderMessage: true)
})
.CreateLogger();
我错过了什么?我是否必须喜欢、生成属性映射或其他东西来破坏非匿名对象? .Net Core 3.1 太新了吗?我不知所措。我在网上看到的每个示例都表明这应该有效。
【问题讨论】:
标签: elastic-stack elk