使用 NLog 获取 ASP.NET 应用程序名称

Boj*_*jan 4 asp.net web-config nlog

我试图弄清楚如何在配置 NLog 时将应用程序名称包含在我的文件名中。这是一个例子:

<target name="trace" xsi:type="File" FileName="C:\MyApp_${date:format=yyyyMMdd}-trace.log" layout="${longdate} ${exception:format=tostring}" />
Run Code Online (Sandbox Code Playgroud)

但是,我似乎无法弄清楚需要使用什么变量来提取应用程序的名称。我希望它是这样的:

<target name="trace" xsi:type="File" FileName="C:\${AppName}_${date:format=yyyyMMdd}-trace.log" layout="${longdate} ${exception:format=tostring}" />
Run Code Online (Sandbox Code Playgroud)

我在这里查看了文档,https://github.com/NLog/NLog/wiki/Layout-Renderers,但他们似乎都无法获取我的应用程序名称,我发现的最好的是,${basedir}但这给了我完整路径。

有没有办法配置这个?

这样做的目的是拥有一个由多个应用程序引用的配置文件,但是它们都有自己的日志文件。

Jul*_*ian 7

编辑:从编辑后的描述中,我了解到您喜欢在 IIS 中读取 MVC 5 应用程序的网站名称。

您可以使用${iis-site-name}渲染器来实现这一点。

您需要为此安装 NLog.Web NuGet 包。无需额外配置。

  • 对于控制台应用程序,“${processname}”可能是您正在寻找的应用程序(在 NLog 包中) (3认同)