【发布时间】:2020-11-15 16:43:14
【问题描述】:
使用 Nlog 从我的 asp.net Core 应用程序登录,我想查看 Datadog 中的日志。
Datadog 允许我可视化日志数据,并以方便的方式对日志进行切片、搜索、选择和排序,从而为我的客户提供支持。
我正在寻找一种使用 NLog 直接发布到 Datadog API 的方法,因此我不需要使用 Windows 代理来收集日志。
下面是如何做到这一点,因为我在任何地方都找不到答案。
【问题讨论】:
使用 Nlog 从我的 asp.net Core 应用程序登录,我想查看 Datadog 中的日志。
Datadog 允许我可视化日志数据,并以方便的方式对日志进行切片、搜索、选择和排序,从而为我的客户提供支持。
我正在寻找一种使用 NLog 直接发布到 Datadog API 的方法,因此我不需要使用 Windows 代理来收集日志。
下面是如何做到这一点,因为我在任何地方都找不到答案。
【问题讨论】:
在 Datadog 中,在 Integrations, APIs 中创建一个 API 密钥。为 API 密钥命名。
在 NLog.config 中创建一个目标。网址是 datadoghq.com 或 datadoghq.eu(适用于欧洲)。
<target xsi:type="WebService"
name="datadog"
url="https://http-intake.logs.datadoghq.com/v1/input"
encoding="utf-8"
protocol="JsonPost"
preAuthenticate="false" >
<parameter name='date' type='System.String' layout='${longdate}'/>
<parameter name='ipaddress' type='System.String' layout='${aspnet-request-ip}'/>
<parameter name="userid" type='System.String' layout="${aspnet-User-Identity}" />
<parameter name="level" type='System.String' layout="${level:upperCase=true}"/>
<parameter name="version" type='System.String' layout="${configsetting:name=VersionSettings.Version:default=?}" />
<parameter name="threadid" type='System.String' layout="${threadid}" />
<parameter name="controller" type='System.String' layout="${aspnet-mvc-controller}" />
<parameter name="class" type='System.String' layout="${callsite:className=True:includeNamespace=False:fileName=False:includeSourcePath=False:methodName=True:cleanNamesOfAnonymousDelegates=True:cleanNamesOfAsyncContinuations=True}" />
<parameter name="message" type='System.String' layout="${message}" />
<parameter name="elapsed" type='System.String' layout ="${event-properties:item=elapsed}" />
<parameter name="service" type='System.String' layout="${configsetting:name=Nlog.Component}" />
<parameter name="hostname" type='System.String' layout="${configsetting:name=Nlog.HostName}" />
<parameter name="exception" type='System.String' layout="${exception:format=ToString}" />
<parameter name="ddsource" type='System.String' layout="csharp" />
<header name="DD-API-KEY" layout="${configsetting:name=Nlog.datadog}"/>
<header name="Content-Type" layout="application/json"/>
</target>
现在创建一个写入目标的规则,你就完成了!
所有参数都可以配置为 Datadog 中的列,和/或要选择的构面。我正在使用日期参数,以便日期与其他日志匹配,而不是显示内置日期。
【讨论】: