【发布时间】:2018-02-24 02:58:31
【问题描述】:
我在 Asp.Net core 2.0 项目中使用 NLog.Web.AspNetCore。如果我使用以下目标:
<target xsi:type="File" name="allfile" fileName="${basedir}/nlog-all-${shortdate}.log"
它会在我的应用程序的 ContentRoot 文件夹中创建一个名为“${basedir}”的空文件夹。它将日志文件放在 bin\Debug\netcoreapp2.0 中。
为什么不替代 ${basedir}?如果我使用日志文件夹的完整路径,它工作正常。
我应该补充一点,我在 nlog.config 中的
internalLogFile="${basedir}/internal-nlog.txt"
当出现内部 Nlog 错误时,它会写入名为“${basedir}”的文件夹中的此文件。
【问题讨论】:
-
您是否更新到
NLog.Web.AspNetCore ver. 4.5.0-rc3和NLog ver. 4.5.0-rc06,并更新了Program.cs中的代码以匹配github.com/NLog/NLog.Web/wiki/…(参见LogManager.LoadConfiguration的用法) -
internalLogFile是非常基础的(为了保持简单和可预测),所以它不知道像${basedir}这样的输出布局渲染器。很可能是创建目录的 internalLogFile。 -
${basedir}表示 AppDomain.BaseDirectory。您希望 basedir 去哪里? -
创建github.com/NLog/NLog.Web/pull/253,所以可以访问${aspnet-appbasepath}(匹配IHostingEnvironment.ContentRootPath和旧的IApplicationEnvironment.ApplicationBasePath)
-
这是我第一次使用 NLog。我已按照您对 .Net Core 2.0 的说明进行操作。它只说安装 NLog.Web.AspNetCore。现在,如果我也尝试安装 NLog,它会显示“包还原失败。正在回滚……”。我正在为两者安装“最新稳定版”:NLog 4.4.12 和 NLog.Web.AspNetCore 4.4.1。
标签: asp.net-core nlog