在asp.net核心的appsettings.json中

时间:2016-11-28 07:42:14

标签: asp.net logging asp.net-core appsettings serilog

我在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 目录。

2 个答案:

答案 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"