#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"]