${basedir} 位于何处,使用 NLog?
Where is ${basedir} located, using NLog?
除非我完全想念它,否则我的印象是 NLog documentation 在其示例中使用 ${basedir}
,而没有解释其位置应该是什么。
我在哪里可以找到列出所有可能的选项和有意义的描述的信息?
我定义了这个配置:
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" throwExceptions="true">
<targets>
<target name="file" xsi:type="File"
layout="${longdate} ${logger} ${message}"
fileName="${basedir}/logs/${shortdate}.txt"
keepFileOpen="false"
encoding="iso-8859-2" />
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="file" />
</rules>
</nlog>
据我所知,它可以正常工作,但我不知道它在哪里记录任何内容。
${basedir}
— 应用程序运行的目录,又名。 AppDomain.BaseDirectory
我想,你会发现 this manual page 有帮助。
这也取决于平台。对于常规的 .Net 项目,它确实是 bin 或 bin/debug 等(取决于您的构建设置)
对于 coreclr / aspnet5,它是 dnx 运行时的 bin 文件夹。这仍在进行中。
根据已经提供的答案和评论,可以总结出.NET应用的答案:
AppDomain.CurrentDomain.BaseDirectory
对于控制台或 Windows 表单应用程序,此目录在 Visual Studio 中时为 bin/debug
。如果部署了应用程序,该路径很可能是可执行文件路径。
对于 Web 应用程序 (ASP.NET),这将是 Web 应用程序根目录。
看不到任何文件可能由多种原因触发,包括:NLog 配置错误和无法写入目标文件。要公开这些错误,请确保 NLog.config(或 web.config 或 app.config 中嵌入的 Nlog 配置)指定一个内部日志文件来输出此类错误:
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
internalLogFile="C:\NLogError\NLog.log">
<!-- targets and rules come here -->
</nlog>
另一种失败的可能性是,如果您使用NLog.config,NLog 找不到配置文件。在您的构建中将文件设置为“始终复制”,它将最终位于您的 bin 目录中,以便 NLog 可以在运行时找到它。
如果您将 NLog 配置信息复制到您的 App.config,您将不会遇到此问题。
除非我完全想念它,否则我的印象是 NLog documentation 在其示例中使用 ${basedir}
,而没有解释其位置应该是什么。
我在哪里可以找到列出所有可能的选项和有意义的描述的信息?
我定义了这个配置:
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" throwExceptions="true">
<targets>
<target name="file" xsi:type="File"
layout="${longdate} ${logger} ${message}"
fileName="${basedir}/logs/${shortdate}.txt"
keepFileOpen="false"
encoding="iso-8859-2" />
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="file" />
</rules>
</nlog>
据我所知,它可以正常工作,但我不知道它在哪里记录任何内容。
${basedir}
— 应用程序运行的目录,又名。 AppDomain.BaseDirectory
我想,你会发现 this manual page 有帮助。
这也取决于平台。对于常规的 .Net 项目,它确实是 bin 或 bin/debug 等(取决于您的构建设置)
对于 coreclr / aspnet5,它是 dnx 运行时的 bin 文件夹。这仍在进行中。
根据已经提供的答案和评论,可以总结出.NET应用的答案:
AppDomain.CurrentDomain.BaseDirectory
对于控制台或 Windows 表单应用程序,此目录在 Visual Studio 中时为 bin/debug
。如果部署了应用程序,该路径很可能是可执行文件路径。
对于 Web 应用程序 (ASP.NET),这将是 Web 应用程序根目录。
看不到任何文件可能由多种原因触发,包括:NLog 配置错误和无法写入目标文件。要公开这些错误,请确保 NLog.config(或 web.config 或 app.config 中嵌入的 Nlog 配置)指定一个内部日志文件来输出此类错误:
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
internalLogFile="C:\NLogError\NLog.log">
<!-- targets and rules come here -->
</nlog>
另一种失败的可能性是,如果您使用NLog.config,NLog 找不到配置文件。在您的构建中将文件设置为“始终复制”,它将最终位于您的 bin 目录中,以便 NLog 可以在运行时找到它。
如果您将 NLog 配置信息复制到您的 App.config,您将不会遇到此问题。