WebJob没有写日志

时间:2019-06-23 20:29:14

标签: c# azure .net-core azure-storage azure-webjobs

为了让我的WebJob写入存储日志,我还有什么需要做的吗?必须缺少某些东西,但我不确定会是什么。

文档含糊不清,仅表示
ProcessQueueMessage函数位于名为StorageQueueProcessor的类中,该方法成功处理添加到存储队列中的新项目。 AzureWebJobsDashboard使用相同的存储队列存储日志,但未写入任何日志。

在appSettings.json中定义了以下连接字符串,它们是正确的:

  "ConnectionStrings": {
    "Storage": ""
    "ServiceBus": ""
    "AzureWebJobsStorage": ""
    "AzureWebJobsDashboard": ""
  },

  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Information",
      "System": "Warning",
      "Microsoft": "Information"
    },
    "Console": {
      "LogLevel": {
        "Default": "Warning",
        "System": "Information",
        "Microsoft": "Information"
      }

这是启动时运行的C#代码:

static async Task MainAsync(string[] args)
        {
            Action<QueuesOptions> qOptions = delegate (QueuesOptions s) 
            {
                s.MaxDequeueCount = 1;
            };

            var builder = new HostBuilder()
               .ConfigureWebJobs(b =>
               {
                   b.AddAzureStorageCoreServices()
                    .AddAzureStorage();

                })
               .ConfigureAppConfiguration(b =>
               {

                })
               .ConfigureLogging((context, b) =>
               {
                   b.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Debug);
                   b.AddConsole();
                })
               .UseConsoleLifetime();

            var host = builder.Build();
            using (host)
            {
                await host.RunAsync();
            }

        }

以下是用于处理存储队列项并尝试写入Azure存储日志的代码:

 public static async Task ProcessQueueMessage([QueueTrigger("site-indexer")] CloudQueueMessage message, TextWriter log)
        {
                System.Console.Out.WriteLine($"Out");
                System.Console.Error.WriteLine($"Error Test Line");
                log.WriteLine($"Log Write Line");
   }

1 个答案:

答案 0 :(得分:0)

您需要安装软件包Microsoft.Extensions.Logging.AzureAppServices,版本2.2.5。然后在Main方法-> ConfigureLogging中,添加b.AddAzureWebAppDiagnostics();

示例代码:

主要方法:

        //other code

        var builder = new HostBuilder()
        .ConfigureWebJobs(b =>
        {
            b.AddAzureStorageCoreServices();
            b.AddAzureStorage();
        })
        .ConfigureAppConfiguration(b =>
        {

        }
        )
        .ConfigureLogging((context, b) =>
        {
            b.SetMinimumLevel(LogLevel.Debug);
            b.AddConsole();

            //add this line of code.
            b.AddAzureWebAppDiagnostics();
        })                
        .UseConsoleLifetime();

         //other code

在Function.cs中:

        public static void ProcessQueueMessage([QueueTrigger("myqueue1", Connection = "AzureWebJobsStorage")]CloudQueueMessage message, ILogger log)
        {
            log.LogInformation("hello, can you see me?");
            log.LogInformation("Log test message:" + DateTime.Now.ToLongDateString());
            log.LogInformation("the queue message is: " + message.AsString);
        }

然后导航至Azure门户-> Web应用程序服务(Web作业已发布到)->在左窗格中,单击“应用程序服务日志”->启用“应用程序日志记录(Blob)”并配置其他设置,例如logLevel ,斑点存储。截图为打击:

enter image description here

将Webjob发布到Web应用程序后,运行Webjobs,然后您可以在kudu网站中查看日志信息:

enter image description here

最后,导航到在上述步骤中配置的Blob容器,您可以在此处看到日志:

enter image description here