Имя приложения IIS в NLog.config - PullRequest
0 голосов
/ 01 мая 2018

Я интегрирую ведение журнала NLog в службу WCF, размещенную в IIS 7.5. Несколько экземпляров (разных версий) службы установлены на одном сайте, поэтому я хотел бы, чтобы имя приложения было частью пути ведения журнала.

Мне известны расширение NLog.Web и ${iis-site-name}, но поскольку сайт является общим для всех экземпляров, это имя приложения ниже уровня сайта, которое я хотел бы использовать в пути к файлу журнала.

Каждое из приложений устанавливается из отдельных базовых папок, но я бы предпочел, чтобы журналы размещались в структуре папок вне базового каталога.

Есть ли подсказки для получения названия приложения? При поиске ответов большинство тем приводит к HostingEnvironment.SiteName, но мне не удалось найти аналогичные способы получения имени приложения.

Заранее спасибо.

1 Ответ

0 голосов
/ 01 мая 2018

Вы можете использовать свойство HostingEnvironment.ApplicationVirtualPath, а затем подключить средство визуализации макета NLog.

Это должно работать для NLog 4.4 и новее:

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

Тогда вы можете использовать ${iis-application-name} в вашем конфигурационном файле NLog.

Просто не забудьте зарегистрировать рендерер, прежде чем делать что-либо еще, то есть сделать это до того, как вы запустите loggin.

...