$ {as pnet -request-posts-body} не возвращает данные - PullRequest
0 голосов
/ 19 апреля 2020

Привет. Я пытаюсь использовать цель Http для отправки журнала в API.

nlog.config:

<targets>
   <target name='HTTP'
        type='HTTP'
        URL='https://localhost:44331/api/logs'
        Method='POST'
        BatchSize='1'
        MaxQueueSize='2147483647'
        IgnoreSslErrors='true'
        FlushBeforeShutdown='true'
        ContentType='application/json'
        Accept='application/json'
        DefaultConnectionLimit='2'
        Expect100Continue='false'
        UseNagleAlgorithm='true'
        ConnectTimeout='30000' 
        InMemoryCompression='true'>
            <layout type='JsonLayout'>
                <attribute name='sourcetype' layout='_json' />
                <attribute name='host' layout='${machinename}' />

                <attribute name='RequestBody' layout='${aspnet-request-posted-body}' />
                <attribute name='event' encode='false'>
                    <layout type='JsonLayout'>
                        <attribute name='level' layout='${level:upperCase=true}' />
                        <attribute name='source' layout='${logger}' />
                        <attribute name='thread' layout='${threadid}' />
                        <attribute name='message' layout='${message}' />
                        <attribute name='utc' layout='${date:universalTime=true:format=yyyy-MM-dd HH\:mm\:ss.fff}' />
                    </layout>
                </attribute>
            </layout>
    </target>

Я получил каждый добавленный атрибут, кроме RequestBody. Также ведение журнала в файл и базу данных работает нормально, также как и http, который вызывается, но без данных тела запроса. Есть что-то, чего мне не хватает?

1 Ответ

0 голосов
/ 19 апреля 2020

Возможно, вам не хватает правильной настройки.

Я перечислю варианты:

ASP. NET (неосновная)

Вам нужно чтобы пакет NLog.Web был установлен

Тогда он должен работать из коробки, но у вас все еще есть проблемы, а затем принудительно включить NLog.Web следующим образом:

<nlog> 
  <extensions> 
    <add assembly="NLog.Web"/> 
  </extensions> 
  ...

См. документы

ASP. NET Core

Для ASP. NET Core зависит от версии.

Прежде всего вам нужен пакет NLog.Web.AspNetCore установлен.

Также добавьте в вашу конфигурацию:

<extensions>
   <!--enable NLog.Web for ASP.NET Core-->
   <add assembly="NLog.Web.AspNetCore"/>
</extensions>

А для установки нужно вызовите NLog.Web.AspNetCore. Я бы порекомендовал проверить: Использовать NLog в ASP. NET Базовое приложение

Убедитесь, что вы набрали .AddNLogWeb(); / .UseNLog() (зависит от ASP. NET Базовая версия)

Все еще проблемы?

Все еще проблемы? Могут быть и другие причины, и пока это предположение. Используемая вами цель может задушить длину значения et c.

. Я бы порекомендовал: проверить его с помощью FileTarget или ConsoleTarget и как проверьте внутренний журнал ! - это покажет хорошее сообщение об ошибке, если что-то не так.

...