Мы используем интеграцию NLog для ядра asp.net для управления нашими журналами.Нам нужно сгенерировать журнал JSON, содержащий время отклика (продолжительность).
Код ниже:
logger.LogInformation("Duration {duration}", 122);
При следующей конфигурации:
<target name="aws" type="Debugger">
<layout type="JsonLayout">
<attribute name="level" layout="${level}" />
<attribute name="msg" layout="${message}" />
<attribute name="err" layout="${exception:format=tostring}" />
<attribute name="meta" encode="false">
<layout type="JsonLayout">
<attribute name="requestId" layout="${aspnet-traceidentifier}" />
<attribute name="user" layout="${aspnet-user-identity}" />
<attribute name="agent" layout="${aspnet-request-useragent}" />
<attribute name="method" layout="${aspnet-request-method}" />
<attribute name="url" layout="${aspnet-request-url:IncludeHost=true:IncludePort=true:IncludeQueryString=true}" />
<attribute name="logger" layout="${logger}" />
<attribute name="duration" layout="${event-properties:duration}" />
</layout>
</attribute>
</layout>
</target>
всегда генерироватьвывод, который выглядит следующим образом:
{
"level": "Info",
"msg": "Duration 122",
"meta": {
"requestId": "0HLKTC2E2B3KL:00000002",
"agent": "PostmanRuntime\/7.6.0",
"method": "POST",
"url": "http:\/\/localhost:20000\/api\/v1\/oauth\/token",
"logger": "TEC.CoreApi.Application.Features.Authentication.OAuthController",
"duration": "122"
}
}
Как вы видите, длительность стала строкой, и это мешает нам использовать наш анализатор журналов (CloudWatch Logs).Мне абсолютно необходимо получить продолжительность в виде числового значения.
Есть идеи, как мне обойти эту проблему?
Спасибо Себастьян