Как заставить Serilog войти в каталог веб-вывода из appsettings.json? - PullRequest
0 голосов
/ 05 марта 2019

Я создал новый веб-проект .NET Core, используя Visual Studio и интегрированный Serilog.Он читает настройки из appsettings.json (через .UseSerilog((ctx, config) => { config.ReadFrom.Configuration(ctx.Configuration); })).

В appsettings.json путь для записи журнала указан в Serilog/WriteTo/Args/pathFormat.Если я установлю это значение на log.txt, он попытается записать файл в `c: \ program files \ iisexpress \ log.txt '.

Как я могу получить его для записи в корень содержимого моего веб-приложения?

1 Ответ

0 голосов
/ 05 марта 2019

В идеале, вы не хотите записывать файлы журналов в корневой каталог вашего веб-приложения, так как они могут оказаться доступными через Интернет, что будет серьезным соображением безопасности.

Конфигурация пути файла журнала может включать переменные среды, поэтому что-то вроде %TMP%\log.txt или путь на основе %LOCALAPPDATA% и т. Д. - хороший вариант (если рабочий процесс веб-сайта имеет разрешение на запись вместоположение).

Вы можете записать путь, относящийся к вашему веб-приложению, изменив текущий каталог перед настройкой регистратора:

Environment.CurrentDirectory = AppContext.BaseDirectory;

Или вы можете объединить эти подходы и установитьваша собственная переменная окружения, чтобы сделать это:

Environment.SetEnvironmentVariable("BASEDIR", AppContext.BaseDirectory);

Таким образом, следующая конфигурация:

"%BASEDIR%\logs\log.txt"
...