Serilog не создает журналы для консоли или файла при публикации приложения (.net 6)

#serilog

Вопрос:

У меня есть рабочее приложение на .net 6. Serilog отлично работает (ведение журнала консоли и файлов) при запуске приложения dotnet run . Однако при запуске из исполняемого приложения оно ничего не регистрирует (даже не создает файл журнала).

Я компилирую приложение с помощью:

 dotnet publish -r linux-x64 -c Release -o app/publish --self-contained true -p:PublishSingleFile=true -p:PublishReadyToRun=false -p:PublishTrimmed=false  

Файл serilog.json является:

 {  "Serilog": {  "Using": [],  "MinimumLevel": {  "Default": "Information",  "Override": {  "Microsoft": "Information",  "Microsoft.Hosting.Lifetime": "Information",  "System": "Information",  "MyApp.LoadData": "Information"  }  },    "WriteTo": [  {  "Name": "Console",  "Args": {  "outputTemplate": "[{Timestamp:o}][{Level:u4}][{ThreadId}][{SourceContext}] {Message}{NewLine}{Exception}"  }  },  {  "Name": "File",  "Args": {  "buffered": true,  "flushToDiskInterval": 15,  "outputTemplate": "[{Timestamp:o}][{Level:u4}][{ThreadId}][{SourceContext}] {Message}{NewLine}{Exception}",  "path": "customerscredit//logs//LoadCredit.log",  "retainedFileCountLimit": 31,  "rollingInverval": "Day",  "textFormatter": "Serilog.Formatting.Json.JsonFormatter, Serilog"  }  }  ],   "Enrich": [ "FromLogContext", "WithMachineName", "WithProcessId", "WithThreadId", "WithExceptionDetails"] ,    "Properties": {  "ApplicationName": "MyApp.LoadData",  "Product": "MyApp",  "Env": ""  }  } }  

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

Спасибо за любую помощь.

Комментарии:

1. Я протестировал то же приложение в dotnet core 5 с теми же результатами. Кроме того, изменил его на dotnet core 3.1, и он работает. Так что это как-то связано с основной версией dotnet.

Ответ №1:

Нашел проблему. Из Сериалога.Настройки.Документация по конфигурации:

Приложения с одним файлом NET 5.0 В настоящее время автоматическое обнаружение сборок конфигурации не поддерживается в связанном режиме. Используйте раздел «Использование» для обходного пути.

Итак, все, что мне тоже нужно было, — это установить использование следующим образом:

 "Using": ["Serilog.Sinks.Console", "Serilog.Sinks.File", "Serilog.Enrichers.Thread"]