0

我正在使用 TimerTrigger CRON 作业将任务安排为 2 天,但触发器似乎不起作用。以下是我尝试过的代码,

public static void StartupJob([TimerTrigger("0 * * * * *", RunOnStartup = true)] TimerInfo timerInfo) //0 * * * * * added CRON job to run for every minute for testing purpose
        {
            Console.WriteLine("Timer job fired!");
        }

local.settings.json

{
    "IsEncrypted": false,
    "Values": {
      "AzureWebJobsStorage": "UseDevelopmentStorage=true",
      "FUNCTIONS_WORKER_RUNTIME": "dotnet"
    }
}

由于上面的代码不起作用,我在 main() 中添加了以下内容

static void Main()
        {
            var config = new JobHostConfiguration();
            config.UseTimers();
            config.Tracing.ConsoleLevel = System.Diagnostics.TraceLevel.Verbose;

            if (config.IsDevelopment)
            {
                config.UseDevelopmentSettings();
            }

            var host = new JobHost(config);
            // The following code ensures that the WebJob will be running continuously
            host.RunAndBlock();
        }

收到以下错误并显示有关安装 DocumentFormat 包的修复,但安装此包并不能解决 FunctionName 错误。

在此处输入图像描述

我是 C# 的新手,无法在这里找到问题所在。任何帮助或对好的例子的参考都会有所帮助和赞赏。

谢谢你。

4

1 回答 1

0

我试图重现您的问题并弄清楚了。

  1. 首先,我在 Visual Studio中创建了Azure Function并选择了Timer Trigger > 点击 create 在此处输入图像描述

  2. 根据您每分钟运行此计时器触发功能的要求,我将表达式更改为[TimerTrigger("0 * * * * *")]

在此处输入图像描述

  1. 之后,构建项目并在本地运行该功能。输出是:

在此处输入图像描述

  1. 在 Azure 中创建了 Function App(消费计划)。
  2. 将上述函数应用从 Visual Studio 发布到 Azure 函数应用。
  3. 然后,转到 Azure 门户 > 您的函数应用程序 > 函数(在左侧索引窗格中)> 单击您的函数名称(在我的例子中是 Function1) 在此处输入图像描述

之后,转到代码+集成,单击测试/运行您的函数,日志将开始记录函数的执行,如下所示:

在此处输入图像描述

示例 2(使用问题中的给定代码):

在此处输入图像描述

在此处输入图像描述

问题是那Console.Writeline是一个静态函数您可以将其输出(stdout)重定向到其他地方,但您无法跟踪该语句在到达标准输出后从何处运行。

为了让我们对每个函数调用进行日志记录,我们需要知道它来自哪个函数以及它属于哪个特定的调用 id。这就是它的TraceWriter作用。从那里,我们的日志引擎将其输出到 Storage 以供我们的仪表板拾取。我们确实将 stdout 管道通过管道传输到 WebJob 日志,但将其绑定回给定的调用并不简单。

有关更多信息,请遵循:https ://github.com/Azure/azure-webjobs-sdk/issues/682

可以使用的另一种方法是自定义日志框架(例如 Serilog)并将日志输出直接输出到控制台。

有关记录样本的更多信息,您可以点击以下链接:

https://docs.microsoft.com/en-us/sandbox/functions-recipes/logging?tabs=csharp

于 2021-11-16T12:23:17.900 回答