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
但 Nlog 似乎无法解析该环境变量。启用跟踪日志时,我收到以下错误消息:
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 过去)
我在 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
但 Nlog 似乎无法解析该环境变量。启用跟踪日志时,我收到以下错误消息:
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 过去)