Asp.net core 在NLog目标中使用${basedir}创建一个同名文件夹
我正在Asp.Net core 2.0项目中使用NLog.Web.AspNetCore。如果我使用以下目标:Asp.net core 在NLog目标中使用${basedir}创建一个同名文件夹,asp.net-core,nlog,Asp.net Core,Nlog,我正在Asp.Net core 2.0项目中使用NLog.Web.AspNetCore。如果我使用以下目标: <target xsi:type="File" name="allfile" fileName="${basedir}/nlog-all-${shortdate}.log" 当出现内部Nlog错误时,它将写入名为“${basedir}”的文件夹中的此文件 创建了${basedir}文件夹,因为NLog内部记录器非常原始,不知道布局渲染 更新NLog版本。4.6增加了对在中使用$
<target xsi:type="File" name="allfile" fileName="${basedir}/nlog-all-${shortdate}.log"
当出现内部Nlog错误时,它将写入名为“${basedir}”的文件夹中的此文件 创建了
${basedir}
文件夹,因为NLog内部记录器非常原始,不知道布局渲染
- 更新NLog版本。4.6增加了对在中使用
的支持${basedir}
程序.cs中添加了两行新代码):
然后可以在nlog.config
中使用${gdc:item=appbasepath}
:
<target xsi:type="File" name="allfile" fileName="${gdc:item=appbasepath}/Logs/nlog-all-${shortdate}.log"
您是否已更新到NLog.Web.AspNetCore版本。4.5.0-rc3和NLog版本。4.5.0-rc06
,并在Program.cs
中更新了您的代码以匹配(请参阅LogManager.LoadConfiguration的用法)
。内部日志文件
非常基本(保持简单和可预测),因此它没有像${basedir}
这样的知识输出布局渲染器。它很可能是创建目录的internalLogFile。${basedir}
表示AppDomain.BaseDirectory。您希望basedir去哪里?已创建,因此可以访问${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安装“最新稳定版”。我收到两个错误:“Set的无重载需要2个参数。”&“LogManager没有LoadConfiguration方法”。当我安装NLog.Web.AspNetCore 4.1.1时,它自动安装了NLog 5.0.0-beta07,这比nuget.org/packages/NLog上的任何版本都要高。所以我不知道我应该使用什么版本。就像我以前写的:你更新到NLog.Web.AspNetCore版本了吗。4.5.0-rc3和NLog版本。4.5.0-rc06?(已更新代码以修复第一个错误)我安装了这两个版本。但我仍然得到了第一个错误。(我应该写“集合不需要重载1个参数。”)太好了!它工作得很好。非常感谢你的帮助。我注意到您调用CreateDefaultBuilder,然后将json文件和环境变量添加到配置中。CreateDefaultBuilder已经添加了这些参数以及UserSecrets和命令行参数。这似乎有点重复。@daniel.caspers答案是在NLog 4.6发布之前写的,但现在已经更新了我的答案。
var appBasePath = System.IO.Directory.GetCurrentDirectory();
NLog.GlobalDiagnosticsContext.Set("appbasepath", appBasePath);
var logger = LogManager.LoadConfiguration("nlog.config").GetCurrentClassLogger();
<target xsi:type="File" name="allfile" fileName="${gdc:item=appbasepath}/Logs/nlog-all-${shortdate}.log"