输入如下
...,
"message": [
",{\"Timestamp\":\"2022-07-10T15:19:26.5172555Z\",\"Level\":\"Error\",\"MessageTemplate\":\"this is an error\",\"RenderedMessage\":\"this is an error\",\"Properties\":{\"RequestId\":\"0HMJ2FOA0IL5B:00000002\",\"RequestPath\":\"/\",\"ConnectionId\":\"0HMJ2FOA0IL5B\"}}\r"
],
...
我尝试了以下方法:
filter {
split {
field => "message"
}
}
和
filter {
json {
source => "message"
}
}
我认为它的格式可能有问题,因为消息字符串的开头有一个逗号,
下面是我为测试这一点而制作的最小API的一个示例
using Elastic.CommonSchema.Serilog;
using Serilog;
var builder = WebApplication.CreateBuilder(args);
builder.Host
.UseSerilog((ctx, lc) => lc
.WriteTo.Http(textFormatter: new EcsTextFormatter(), requestUri: "http://localhost:5000", queueLimitBytes: null)
.Enrich.FromLogContext()
);
var app = builder.Build();
app.MapGet("/", (Serilog.ILogger logger) =>
{
logger.Error("this is an error");
return "logged an error";
});
app.Run("http://localhost:3000");
1条答案
按热度按时间vawmfj5a1#
我遇到的问题是由于不正确的logstash输入设置,以前我有:
我通过
Serilog.Sinks.Http
将HTTP日志写入端口5000正确的logstash输入如下:
然后写日志到8080,事后看来很明显,但这是我坚持了几天的事情。
怀疑人们经常犯这个错误(如果有的话),因为我在网上找不到任何关于它的东西,但我还是要写这个答案!