我有一个rest api,它需要将日志发送到一个中央Api。我使用NLog在.netcore 6中进行日志记录,并使用Http将日志发送到中央日志记录api:
这就是我如何在app.config.json中调整Http目标的方法。
"Http":{ "type":"HTTP","URL":"https://localhost:7217/Log/*"“,"IgnoreSslErrors":"true",”IgnoreSslErrors“:”JsonLayout“:{ "type":"JsonLayout","_json”},{“_json”},{“_json”:"${machinename}“},{”事件“:{ "type":"JsonLayout",“属性”:{“级别”:"${level:upperCase=true}“},{”源“:"${logger}”},{“线程”:"${threadid}“},{”消息“:"${message}”},{ "utc":“${date:universalTime=true:format=yyyy dd HH\:mm\:ss.fff}”}}}
在中央服务中,我创建了方法,以接收日志:
[HttpPost("LogsEntry")] [Consumes(MediaTypeNames.Application.Json)] public async Task<ActionResult> PostLogsEntryAsync([FromBody] Event rt) { ... }
在中心Api方法中,我必须期望的c#对象(事件)是什么?如何用NLog捕获由Http发送的事件日志,我的事件对象应该具有哪些属性?在Nlog中找不到很多关于HttpTarget的信息。
发布于 2022-02-16 20:10:39
我的事件对象应该具有哪些属性?
答案是:这取决于你。HTTP目标不以NLog确定的格式发送固定消息。相反,您可以在layout属性中定义日志消息所具有的字段。
示例
假设我们的目标配置如下所示:
"http": {
"type": "HTTP",
"url": "https://localhost:7065/Log",
"IgnoreSslErrors": "true",
"contentType": "application/json",
"layout": {
"type": "JsonLayout",
"attributes": [
{
"name": "level",
"layout": "${level:upperCase=true}"
},
{
"name": "source",
"layout": "${logger}"
},
{
"name": "thread",
"layout": "${threadid}"
},
{
"name": "message",
"layout": "${message}"
},
{
"name": "utc",
"layout": "${date:universalTime=true:format=yyyy-MM-dd HH\\:mm\\:ss.fff}"
}
]
}
}然后相应的Event模型将如下所示:
public class Event
{
public string Level { get; set; }
public string Source { get; set; }
public string Thread { get; set; }
public string Message { get; set; }
public string Utc { get; set; }
}https://stackoverflow.com/questions/70965150
复制相似问题