如何从Azure函数js存储异常/错误?

时间:2017-07-26 13:25:09

标签: javascript azure azure-functions

我已经创建了一个Azure函数来保存来自Iot Hub的SQL数据库中的数据正常工作,现在我想将异常和错误保存到Azure存储表,所以为此我添加了try{ } catch(err){}但这不是工作。请纠正我。谢谢!

我的职能就在这里

module.exports = function (context, iotHubMessage) {

try {
    var strMsg = JSON.stringify(iotHubMessage);
    context.log('Message received: ' + strMsg);

    var ob1 = { "employee_idw": 444, "last_name": "Teller", "first_name": "Saara", "age": 34, "salary": 87000 };
    //I misspelled 'employee_idw' to generate error

    var ob2 = { "employee_id": 555, "last_name": "Teller", "first_name": "Saara", "age": 31, "salary": 87000 };

    ob1.EventProcessedUtcTime = new Date;
    ob2.EventProcessedUtcTime = new Date;

    var arr = [];
    arr.push(ob1);
    arr.push(ob2);

    context.bindings.outputTable = arr;


    context.done();
} catch (err) {
    context.log('CCC Error' + err);  // even can not see this message in log
    context.bindings.error= { "partitionKey": partitionKey, "rowKey": rowKey, "data": err };
}
};

看到这是JSON文件

{
"bindings": [
 {
  "type": "eventHubTrigger",
  "name": "myEventHubMessage",
  "path": "myeventhub",
  "consumerGroup": "$Default",
  "connection": "PBCorIOTHub_events_IOTHUB",
  "cardinality": "many",
  "direction": "in"
 },
 {
  "type": "apiHubTable",
  "name": "outputTable",
  "dataSetName": "default",
  "tableName": "employees",
  "connection": "sql_SQL",
  "direction": "out"
 },

 {
  "type": "table",
  "name": "error",
  "tableName": "dddtTest",
  "connection": "cccteststr_STORAGE",
  "direction": "out"
 }
 ],
 "disabled": false
 }

1 个答案:

答案 0 :(得分:0)

您是否使用Azure SQL或Azure表存储来存储数据?从您的代码看起来您​​使用的是Azure表存储。我问的原因是因为更改的属性名称不会导致函数错误。相反,表存储将创建一个带有拼写错误名称的新属性。

就像Mikhail建议存储函数内部导致的错误一样,您只需要创建另一个输出绑定并为其分配异常。

然而,并非所有异常都发生在函数上下文中。例如,function.json配置中的错误可能导致连接到存储的错误。这将导致函数执行在函数代码上下文之外失败。 Azure功能与Application Insights直接集成,可以帮助监控您要查找的内容。这是一篇博文,可以展示如何配置Application Insights。

https://blogs.msdn.microsoft.com/appserviceteam/2017/04/06/azure-functions-application-insights/