Azure-Environmentvariable 在 NLog 上不可读 - 配置

Azure-Environmentvariable not readable on NLog - Config

我在 Azure 上部署了一个网络作业(在 home\site\wwwroot\App_Data\jobs\triggered 目录下)。此应用程序包含在应用程序设置中配置的 NLog 日志记录,并使用环境变量作为日志文件路径:

 "NLog": {
    "throwConfigExceptions": true,
    "targets": {
      "logfile": {
        "type": "File",
        "fileName": "${environment:variable=DEPLOYMENT_SOURCE}\LogFiles\timer-${shortdate}.log",
        "layout": "${message} "
      },

DEPLOYMENT_SOURCE - 环境变量在 kudu 中显示时包含有效路径:

echo %DEPLOYMENT_SOURCE%
C:\home

但 Nl​​og 似乎无法解析该环境变量。启用跟踪日志时,我收到以下错误消息:

Debug Creating file appender: C:\LogFiles\timer-2020-11-13.log

Trace Opening C:\LogFiles\timer-2020-11-13.log with allowFileSharedWriting=False

Error FileTarget(Name=logfile): Failed write to file 'C:\LogFiles\timer-2020-11-13.log'. Exception: > System.UnauthorizedAccessException: Access to the path 'C:\LogFiles\timer-2020-11-13.log' is denied.

所以看起来 DEPLOYMENT_SOURCE 只是一个空字符串。

当使用有效的 Windows-Env 像 %TEMP% 在本地测试时,一切正常。

在 Dotnetcoreapps/NLog-Config 中访问 Azure 环境需要做什么?

我解决了这个问题。 问题是 Azure DevOps 上的触发 WebJobs 没有与 Kudu 控制台相同的可用环境变量。

因此,虽然 Kudu 显示不同的环境变量,如 DEPLOYMENT_SOURCE,但此变量不适用于 webjobs。

但是还有其他环境(在本例中为“HOME”,如评论中已经提到的 Rolf)也指向 Azure 上的 C:\home。 (D:\home 过去)