问题描述
我正在尝试设置Azure功能,基于消耗模式的Linux,已触发队列。 它在调试中可以完美地在本地工作(每个程序员都说过),但是在部署时什么也没有发生。我找不到任何日志。
我从头开始,上传了一个空函数-它起作用了,但是一旦我添加了自己的库,它就停止了工作。
然后我尝试删除我的库并重新上载“ hello world”功能,但该功能仍然无效。
这是host.json:
{
"logging": {
"fileLoggingMode": "always","logLevel": {
"default": "@R_510_4045@ion","Host.Results": "@R_510_4045@ion","Function": "@R_510_4045@ion","Host.Aggregator": "@R_510_4045@ion"
},"applicationInsights": {
"samplingExcludedTypes": "Request","samplingSettings": {
"isEnabled": true
}
},"console": {
"isEnabled": "true"
}
},"Values": {
"AzureWebJobsstorage": "DefaultEndpointsProtocol=https;AccountName=****;AccountKey=*****;BlobEndpoint=https://***.blob.core.windows.net/;TableEndpoint=https://*****.table.core.windows.net/;QueueEndpoint=https://****.queue.core.windows.net/;FileEndpoint=https://****.file.core.windows.net/","FUNCTIONS_WORKER_RUNTIME": "dotnet"
},"version": "2.0"
}
[FunctionName("EmailQueueWorker")]
//public static async Task Run(
public static async Task Run(
[QueueTrigger(queueName: "email",Connection = "AzureWebJobsstorage")] string queueItem,ILogger log
)
{
log.LogWarning("Start run()");
}
我在做什么错(或者在哪里可以找到日志?Application Insights为空)?谢谢
解决方法
我在一两个星期前遇到了同样的问题;我敢打赌,问题是您与队列的连接。为了进行比较,这是我(工作)队列触发函数的完整完整host.json:
{
"version": "2.0","logging": {
"applicationInsights": {
"samplingSettings": {
"isEnabled": true
}
},"fileLoggingMode": "always","logLevel": {
"default": "Information","Host.Results": "Error","Function": "Trace","Host.Aggregator": "Trace"
}
}
}
连接字符串
我们的logLevel部分有所不同,您会注意到那里没有任何连接字符串。我对Azure还是一个陌生的人,但是据我了解,那不是他们要去的地方。
在Visual Studio 2019中,右键单击项目,然后单击发布。在“操作”下,单击“管理Azure App Service设置”。在这里,您可以添加任何需要的连接字符串设置。如果需要指定存储帐户,则设置名称应为该存储帐户的名称加“ _STORAGE”。例如,如果您的存储帐户名为 MyVault ,则设置的名称将为MyVault_STORAGE
。
在VS Code中,这有点不同。您必须在“功能”下查看“ Azure”,然后确保选择“ Azure订阅”(而不是本地副本!),并深入到功能“应用程序设置”中,您可以在其中添加/编辑。
在Azure门户中,您可以管理应用设置this way。
日志
在Azure门户中,首先转到Function App。单击您的主要功能名称。现在,在该功能的新菜单下的“功能”子菜单下,单击“功能”。现在,您将看到构成队列触发功能的所有不同功能的列表。其中应该是EmailQueueWorker
-单击它。现在,您应该看到执行计数,可以单击左侧菜单中的Monitor,然后单击中间区域的Logs。您可以根据需要启动/停止/清除。
无论出于何种原因,我发现使用Visual Studio 2019或VS Code而不是Web控制台流式传输时,看到实际日志数据的速度要快得多。 Web控制台有时有时会有点延迟。