【问题标题】:Azure web job and log4netAzure Web 作业和 log4net
【发布时间】:2017-10-03 08:15:59
【问题描述】:

我正在使用 Azure Web 作业来安排某些任务。 Web 作业在 Azure Web 应用程序中成功部署,但我无法相对确定应存储日志文件的 app_data 文件夹的路径。 (网络作业位于 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" />

有没有人知道如何相对设置文件路径?

【问题讨论】:

  • 何必呢,这条路不会变的

标签: azure azure-webjobs


【解决方案1】:

一般而言,您可以按如下方式指定路径以实现您的目的:

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

对于 WebJobs,默认情况下,您的 Web 作业将被复制到临时目录(例如 %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。此外,您可以检查网络作业的内置日志记录here

【讨论】:

    【解决方案2】:

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

    如果您的目标是访问APP_DATA 文件夹,您可以查看指向d:\home\site\wwwrootWEBROOT_PATH 环境变量,然后将其与APP_DATA 结合起来。

    【讨论】:

      猜你喜欢
      • 2015-12-15
      • 2015-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多