Azure Web作业和log4net

时间:2017-10-03 08:16:00

标签: azure azure-webjobs

我正在使用Azure Web作业来安排某些任务。 Web作业在Azure Web应用程序中成功部署,但我无法相对确定app_data文件夹的路径,应该存储日志文件的位置。 (Web作业位于d:\ home \ site \ wwwroot \ App_Data \ jobs \ triggered \ webjobname)

以下(绝对)路径有效:

<file value="d:\\home\\site\\wwwroot\\App_Data\\Logs\\WebJobLog.txt" />

以下路径不起作用:

<file value="../../App_Data/Logs/WebJobLog.txt" />
<file value="/App_Data/Logs/WebJobLog.txt" />
<file value="~/App_Data/Logs/WebJobLog.txt" />

任何人都知道如何相对设置文件路径?

2 个答案:

答案 0 :(得分:1)

您应该避免硬编码关于WebJobs部署位置的相关假设。

如果您的目标是转到APP_DATA文件夹,则可以查看指向WEBROOT_PATH的{​​{1}}环境变量,然后将其与d:\home\site\wwwroot结合使用

答案 1 :(得分:1)

通常,您可以按照以下方式指定路径以实现目的:

<file value="App_Data\\Logs\\WebJobLog.log" />

对于WebJobs,默认情况下,您的webjob将被复制到临时目录(例如%TEMP%\jobs\{job type}\{job name}\{random name})以进行运行,此时您的日志文件将位于临时文件夹下。有关详细信息,请参阅WebJob Working Directory

根据您的要求,您可以利用log4net.Util.PatternString并使用env转换模式来检索David Ebbo建议的环境变量(WEBROOT_PATH)。您需要按如下方式更改路径:

<file type="log4net.Util.PatternString" value="%env{WEBROOT_PATH}\\App_Data\\Logs\\WebJobLog.log" />

此外,您可以通过编程方式创建FileAppender,对于此方法,您可以参考此issue。此外,您可以检查webjobs here的内置日志记录。