我在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 目录。
答案 0 :(得分:1)
简短:你不能在appsettings.json中。
更长:您可以通过静态PlatformServices
类代码。
PlatformServices.Default.Application.ApplicationBasePath;
然后使用replace或您认为合适的任何内容将${basedir}
替换为ApplicationBasePath
返回的值,然后将其传递给您的记录器配置。
旁注:你不应该在PlatformServices
/ Startup
课程之外使用Programm
,因为它们是静态的,不适合测试等。
答案 1 :(得分:1)
一个选项是在启动时使用基本路径设置环境变量:
Environment.SetEnvironmentVariable("BASEDIR", AppDomain.CurrentDomain.BaseDirectory);
然后在配置中使用"%BASEDIR%/logs/serilog-{Date}.txt"
。