Как настроить `Serilog` для записи в каталог приложения с файлом cofig? - PullRequest
0 голосов
/ 02 апреля 2019

Я использую Serilog на .net core. Я хочу настроить путь к журналу приложения.

Я вижу, что есть расширение https://github.com/serilog/serilog-settings-configuration, которое позволяет Serilog читать из Configuration. В примере путь настроен как "%TEMP%\\Logs\\serilog-configuration-sample.txt". Как мне установить его в рабочий каталог?

Я искал так и знаю, что это можно сделать с помощью кода, но, похоже, никто не спрашивает, как это сделать с помощью файла конфигурации, то есть appsettings.json.

Текущая конфигурация:

{
  "Serilog": {
    "Using": [
      "Serilog.Sinks.File"
    ],
    "MinimumLevel": {
      "Default": "Debug",
      "Override": {
        "Microsoft": "Warning",
        "System": "Warning"
      }
    },
    "WriteTo": [
      {
        "Name": "File",
        "Args": { "path": "Logs\\serilog-configuration-sample.txt" }
      }
    ],
    "Enrich": [ "FromLogContext", "WithMachineName" ],
    "Destructure": [
    ],
    "Properties": {
    }
  },
  "AllowedHosts": "*"
}

Я хочу, чтобы путь к журналу был установлен в рабочий каталог. Но в настоящее время он находится в "C: \ Program Files \ IIS Express".

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

Настройка пути, например Logs/log.txt, запишет файлы журнала в папку logs в рабочем каталоге

"WriteTo": [
  {
    "Name": "File",
    "Args": {
      "path": "Logs/log.txt"
    }
  }

Также вы можете проверить этот ответ для другой опции

1 голос
/ 02 апреля 2019

Вы можете добавить «RollingFile», который может записывать в файл локального пути. В этом примере я пишу в файле внутри корня моего проекта, как показано ниже.

{
    "Name": "RollingFile",
    "Args": {
      "pathFormat": ".\\Logs\\logs.txt",
      "fileSizeLimitBytes": 1048576
    }
  },

Также полный файл json на appsettings.json в конечном итоге выглядит так (на случай, если вам нужен полный пример)

...
"Serilog": {
    "MinimumLevel": {
      "Default": "Debug",
      "Override": {
        "System": "Debug",
        "Microsoft": "Debug"
      }
    },
    "WriteTo": [
      {
        "Name": "ApplicationInsightsEvents",
        "Args": {
          "instrumentationKey": "xxxxxxxxxx"
        }
      },
      {
        "Name": "RollingFile",
        "Args": {
          "pathFormat": ".\\Logs\\logs.txt",
          "fileSizeLimitBytes": 1048576
        }
      },
      { "Name": "Console" },
      {
        "Name": "EventLog",
        "Args": {
          "source": "API NAME",
          "logName": "CustomLog",
          "restrictedToMinimumLevel": "Warning"
        }
      }
    ],
    "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
    "Properties": {
      "Application": "API NAME"
    }
  }
...
...