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"
。
我在 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"
。