NLog.Config читает из папки IIS Express вместо Content Root - PullRequest
0 голосов
/ 05 февраля 2019

Я пишу службу ASP.NET Core 2.2, которая использует Common.Logging и NLog .

Я подключил Common.Logging с помощью NLog, в файле appsettings.json:

  "LogConfiguration": {
    "factoryAdapter": {
      "type": "Common.Logging.NLog.NLogLoggerFactoryAdapter, Common.Logging.NLog45",
      "arguments": {
        "configType": "FILE",
        "configFile": "~/nlog.config"
      }
    }
  }

И в Startup.cs я добавил:

    var logConfiguration = new LogConfiguration();
    Configuration.GetSection("LogConfiguration").Bind(logConfiguration);
    LogManager.Configure(logConfiguration);

Когда я запускаю свой сервис и код попадает в logger.Info, I get a The type initializer for '...' threw an exception.

Для NLog это обычно означает, что цели не найдены.Я использовал Procmon.exe для поиска неудачного доступа к nlog.config и нашел попытку прочитать: C: \ Program Files \ IIS Express \ ~ \ nlog.config .

Howполучить IIS Express для поиска nlog.config в корне содержимого?

1 Ответ

0 голосов
/ 05 февраля 2019

Почему бы не сделать, как показано в PullRequest:

{
  "LogConfiguration": {
    "factoryAdapter": {
      "type": "Common.Logging.NLog.NLogLoggerFactoryAdapter, Common.Logging.NLog45",
      "arguments": {
        "configType": "INLINE",
      }
    }
  }
}

И позволить NLog 4.5 загрузить свою собственную конфигурацию LoggingConfiguration.

https://github.com/net-commons/common-logging/pull/176

Вы также можете явным образом вести журналNLog.config из требуемого местоположения:

https://github.com/NLog/NLog/wiki/Explicit-NLog-configuration-loading

...