.net 核心 6 中的 NLog HttpTarget
NLog HttpTarget in .net core 6
我休息 Api 谁需要将日志发送到中央 api。
我正在使用 NLog 登录 .netcore 6,并使用 Http Target 将日志发送到中央日志记录 api:
这就是我在 app.config.json
中调整 Http 目标的方式
"Http": {
"type": "HTTP",
"URL": "https://localhost:7217/Log/*",
"IgnoreSslErrors": "true",
"layout": {
"type": "JsonLayout",
"attribute": [
{
"sourcetype": "_json"
},
{
"host": "${machinename}"
},
{
"event": {
"type": "JsonLayout",
"attribute": [
{
"level": "${level:upperCase=true}"
},
{
"source": "${logger}"
},
{
"thread": "${threadid}"
},
{
"message": "${message}"
},
{
"utc": "${date:universalTime=true:format=yyyy-MM-dd HH\:mm\:ss.fff}"
}
]
}
}
]
}
}
},
在中央服务中我创建了接收日志的方法:
[HttpPost("LogsEntry")]
[Consumes(MediaTypeNames.Application.Json)]
public async Task<ActionResult> PostLogsEntryAsync([FromBody] Event rt)
{
...
}
我必须在中央 Api 方法中期望的 c# 对象(事件)是什么?如何使用 NLog 捕获 Http Target 发送的事件日志,我的事件对象应该具有哪些属性?
在 Nlog 中找不到很多关于 HttpTarget 的信息。
what properties should my Event object have?
答案是:由你决定。 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; }
}
我休息 Api 谁需要将日志发送到中央 api。 我正在使用 NLog 登录 .netcore 6,并使用 Http Target 将日志发送到中央日志记录 api:
这就是我在 app.config.json
中调整 Http 目标的方式"Http": { "type": "HTTP", "URL": "https://localhost:7217/Log/*", "IgnoreSslErrors": "true", "layout": { "type": "JsonLayout", "attribute": [ { "sourcetype": "_json" }, { "host": "${machinename}" }, { "event": { "type": "JsonLayout", "attribute": [ { "level": "${level:upperCase=true}" }, { "source": "${logger}" }, { "thread": "${threadid}" }, { "message": "${message}" }, { "utc": "${date:universalTime=true:format=yyyy-MM-dd HH\:mm\:ss.fff}" } ] } } ] } } },
在中央服务中我创建了接收日志的方法:
[HttpPost("LogsEntry")] [Consumes(MediaTypeNames.Application.Json)] public async Task<ActionResult> PostLogsEntryAsync([FromBody] Event rt) { ... }
我必须在中央 Api 方法中期望的 c# 对象(事件)是什么?如何使用 NLog 捕获 Http Target 发送的事件日志,我的事件对象应该具有哪些属性? 在 Nlog 中找不到很多关于 HttpTarget 的信息。
what properties should my Event object have?
答案是:由你决定。 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; }
}