【发布时间】:2020-02-04 14:49:02
【问题描述】:
我是Serilog 的新手,我正在尝试确定如何使用log level 和date time 字段将序列化的json 发送到console。 structured data 下的文档中似乎没有任何信息。
这是我在Startup.cs 中调用的代码:
private void LoggerLoop(ILogger<Startup> logger)
{
RabbitModel rb = new RabbitModel
{
Id = 1,
DeviceNum = 1,
DeviceName = "Device 1",
InputNum = 1,
InputName = "Input 1",
InputState = 1,
OnPhrase = "On",
OffPhrase = "Off",
When = "2020-01-01T22:45:00.1124303+00:00"
};
while (true)
{
logger.LogInformation("{@rb}", rb);
Thread.Sleep(1000);
}
}
这是我的输出:
[14:28:22 INF] {"Id": 1, "DeviceNum": 1, "DeviceName": "Device 1", "InputNum": 1, "InputName": "Input 1", "InputState": 1, "OnPhrase": "On", "OffPhrase": "Off", "When": "2020-01-01T22:45:00.1124303+00:00", "$type": "RabbitModel"}
我确实注意到它添加了一个字段 $type 并想知道是否可以将 [14:28:22 INF] 添加到 json 中?
【问题讨论】:
-
为什么需要 json 格式的数据?
-
我特别想要
json中的日志级别和其余部分,因为我不想将它与 Elasticsearch 一起使用 -
为此使用Elasticsearch sink。它会自动将所有日志数据转换为 json(弹性格式)。您可以直接写入弹性文件,或使用
ElasticsearchJsonFormatter写入控制台,但是您需要一些可以收集日志并将其发送到弹性文件的东西。用容器就可以流利了 -
谢谢,是的,我正在从容器中运行一切。我计划通过
Docker容器将json发送到Filebeat,然后将这些数据发送到 Elasticsearch。 -
我将描述我们的流程:根据12 factor app所有日志以elasticsearch格式写入
stdout(控制台),然后我们有安装了fluentd的kubernetes集群,它从容器中收集所有日志(通过过滤器)并将其发送到 Elastic。所有日志都是structured,它改进了在 Kibana 中的搜索
标签: c# elasticsearch asp.net-core serilog