代码之家  ›  专栏  ›  技术社区  ›  Moelgaard

NLog中的IIS应用程序名称。配置

  •  2
  • Moelgaard  · 技术社区  · 7 年前

    我正在IIS 7.5中托管的WCF服务中集成NLog日志记录。该服务的多个实例(不同版本)安装在同一个站点下,因此我希望应用程序名称是日志路径的一部分。

    我知道NLog。Web扩展和 ${iis-site-name} 但由于该站点对于所有实例都是通用的,因此我希望在日志文件路径中使用的是站点级别下的应用程序名称。

    每个应用程序都是从单独的baseDir安装的,但我更希望日志位于远离baseDir的文件夹结构中。

    是否有获取应用程序名称的提示?在搜索答案时,大多数线程都会指向HostingEnvironment。SiteName,但我无法找到类似的方法来获取应用程序名称。

    提前谢谢。

    1 回复  |  直到 7 年前
        1
  •  2
  •   KasperSK    7 年前

    您可以使用 HostingEnvironment.ApplicationVirtualPath 属性,然后连接NLog布局渲染器。

    这应该适用于NLog 4.4及更新版本:

    LayoutRenderer.Register("iis-application-name", (logEvent) => HostingEnvironment.ApplicationVirtualPath);
    

    然后您可以使用 ${iis-application-name} 在NLog配置文件中。

    只需记住在执行任何其他操作之前注册渲染器,即在开始登录之前注册。