Заполнители Serilog {Application} и {Exception} не работают - PullRequest
0 голосов
/ 14 февраля 2020

Короткая версия:

Обогащение журнала Serilog, является ли "суперсет" отключением всех опций, определенных где-либо?

Более длинная версия:

https://github.com/serilog/serilog/wiki/Enrichment

Итак, у меня есть следующие настройки приложений. json для моей конфигурации Serilog.

(обращая внимание на Enrich)

{
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "AllowedHosts": "*",
  "Serilog": {
    "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.RollingFile" ],
    "MinimumLevel": "Debug",
    "Enrich": [ "FromLogContext", "WithMachineName", "WithEnvironmentUserName", "WithThreadId", "WithProcessId", "WithExceptionDetails" ],
    "WriteTo": [
      {
        "Name": "Console",
        "Args": {
          "outputTemplate": "HelloConsole {Timestamp:o} [{Level:u3}] (App={Application}/MN={MachineName}/TID={ThreadId}) Msg={Message}{NewLine}Exc={Exception}{NewLine}"
        }
      },
      {
        "Name": "File",
        "Args": {
          "path": "Serilog.LogFile.txt",
          "rollingInterval": "Minute",
          "outputTemplate": "HelloFile {Timestamp:o} [{Level:u3}] (App={Application}/MN={MachineName}/TID={ThreadId}) Msg={Message}{NewLine}Exc={Exception}{NewLine}"
        }
      }
    ]
  }
}

У меня есть

<PackageReference Include="Serilog.Enrichers.Environment" Version="2.1.3" />
<PackageReference Include="Serilog.Enrichers.Process" Version="2.0.1" />
<PackageReference Include="Serilog.Enrichers.Thread" Version="3.1.0" />


<PackageReference Include="Serilog.Enrichers.AssemblyName" Version="1.0.9" />
<PackageReference Include="Serilog.Enrichers.Context" Version="4.2.0" />

В документации указано следующее: (от https://github.com/serilog/serilog/wiki/Enrichment)

Serilog.Enrichers.Environment - WithMachineName() and WithEnvironmentUserName() 
Serilog.Enrichers.Process - WithProcessId()
Serilog.Enrichers.Thread - WithThreadId()

Некоторые вещи, которые я можно догадаться (используя документацию, соединенную со ссылкой на пакет)

, но некоторые вещи, я вроде "откуда это взялось?"

Например:

в json:

"FromLogContext"

с каким пакетом nuget связан этот пакет? Я угадываю "Serilog.Enrichers.Context", но как мне это узнать?

С другой стороны, с "Serilog.Enrichers.AssemblyName" и "Serilog.Enrichers.Context", как мне это сделать? знаете, что поместить в элемент. json "Обогащение"?

Полный список пакетов ... ниже ... чтобы было ясно, что у меня есть "все".

  <ItemGroup>
    <PackageReference Include="Serilog" Version="2.9.0" />
    <PackageReference Include="Serilog.Enrichers.AssemblyName" Version="1.0.9" />
    <PackageReference Include="Serilog.Enrichers.Context" Version="4.2.0" />
    <PackageReference Include="Serilog.Enrichers.Environment" Version="2.1.3" />
    <PackageReference Include="Serilog.Enrichers.Process" Version="2.0.1" />
    <PackageReference Include="Serilog.Enrichers.Thread" Version="3.1.0" />
    <PackageReference Include="Serilog.Exceptions" Version="5.4.0" />
    <PackageReference Include="Serilog.Extensions.Logging" Version="3.0.1" />
    <PackageReference Include="Serilog.Settings.Configuration" Version="3.1.0" />
    <PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" />
    <PackageReference Include="Serilog.Sinks.File" Version="4.1.0" />
    <PackageReference Include="Serilog.Sinks.RollingFile" Version="3.3.0" />
  </ItemGroup>

Итак с указанным выше json и объявлением «Enrich», а также над пакетами nuget .... Я получаю это (в файле) ... Обратите внимание на часть после "App =" и после "Exc =" .... .

HelloFile 2020-02-14T14:38:19.3951750-05:00 [INF] (App=/MN="MyComputerName"/TID=14) Msg=My Information Message
Exc=
HelloFile 2020-02-14T14:38:19.4021588-05:00 [ERR] (App=/MN="MyComputerName"/TID=10) Msg=My Exception Message
Exc=

Я не получаю (заполнитель ниже)

{Application}

и не получаю (заполнитель ниже)

{ Исключение}

"заполнено" ....... в моем файле .txt.

Я предполагаю, что у меня есть подходящие пакеты nuget для этих двух:

<PackageReference Include="Serilog.Enrichers.AssemblyName" Version="1.0.9" />
<PackageReference Include="Serilog.Exceptions" Version="5.4.0" />

но это не работает.

, поэтому короткий вопрос: "Как заставить {Application} и {Exception} работать?

больший вопрос ... где находится "супер список" возможностей?

.. .....

и все волхвы c {flags}

{Timestamp:o}, {Level:u3}, {Application}, {MachineName}, {ThreadId}, {Message}, {NewLine}, {Exception}

Задокументированы ли они где-нибудь?

Обычно с моим доказательством концепции (что я я сейчас работаю над этим) Я делаю супер-набор всего и кухонную раковину ......... но это было сложно собрать воедино.

Другая информация:

Мое "приложение" - это do tnet -consoleapp.

Exe netcoreapp2.1; netcoreapp3.1

Я работаю под 3.1 "профилем" ....

Visual Studio 2019 в Windows 10 Pro O / S.

...