为了让我的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");
}
答案 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 ,斑点存储。截图为打击:
将Webjob发布到Web应用程序后,运行Webjobs,然后您可以在kudu网站中查看日志信息:
最后,导航到在上述步骤中配置的Blob容器,您可以在此处看到日志: