问题描述
我有一个带有生产,阶段和开发环境的.net核心Web api项目。我在nlog target的文件名中使用了{baseDir}
,但是当我运行项目时,它将日志文件存储在bin\netcoreapp3.1\netcoreapp3.1
文件夹中。
我有一个文件夹Logs
,我想将日志存储在此文件夹中。
在所有环境中我都一样。
任何人都知道该怎么做,请帮助我!
更多细节:
nlog.config
<variable name="DefaultLayout" value="${longdate} ${processid} ${uppercase:${level}} ${logger:shortName=true} ${environment-user} ${local-ip} ${message} "/>
<targets async="true">
<target xsi:type="File" name="file" layout="${DefaultLayout}" fileName="${baseDir}\log-${shortdate}.log" />
</targets>
谢谢!!
解决方法
{baseDir}
是执行代码的目录,因此您得到的是正确的。
如果要使用ASP.NET Core应用程序的内容根路径,则需要使用${aspnet-appbasepath}
-ref。
您可以将其指定为fileName="${aspnet-appbasepath}\Logs\log-${shortdate}.log"
。
从文档中
NLog.Web.AspNetCore v4.5.0和NLog.Web v4.5.2引入
请确保您要定位各自的版本,否则将无法使用${aspnet-appbasepath}