asp.net 核心 appsettings.json 中的 basedir

basedir in appsettings.json in asp.net core

我在 ASP.NET Core 中开始了我的新项目,我有一个问题。

我有 2 个记录器: a) nLog,在 nlog.config 文件中有它的配置 b) serilog,它的配置在 appsettings.json

目前,我有两个位置可以存储日志: fileName="${basedir}/logs/EPR/nlog-all-${shortdate}.log - nLog "SerilogFile": "logs/serilog-{Date}.txt" - serilog

我的问题是,如何获取appsettings.json文件中的basedir目录。

:你不能在appsettings.json。

更长:您可以在代码中通过静态 PlatformServices class.

PlatformServices.Default.Application.ApplicationBasePath;

然后使用替换或任何您认为合适的方法将 ${basedir} 替换为 ApplicationBasePath 返回的值,然后将其传递给您的记录器配置。

旁注:您不应该在 Startup/Programm class 之外使用 PlatformServices,因为它们是静态的并且不利于测试等

一个选项是在启动时使用基本路径设置环境变量:

Environment.SetEnvironmentVariable("BASEDIR", AppDomain.CurrentDomain.BaseDirectory);

然后在配置中使用"%BASEDIR%/logs/serilog-{Date}.txt"