1

時當試圖調用Stackdriver Error Reporting API(經由Client-Side JavaScript libraryvia the API explorer或),收到以下錯誤:INVALID_ARGUMENT(400錯誤)調用爲Stackdriver錯誤報告API

請求:

{ "message" : "test" } 

響應:

{ 
    "error": { 
    "code": 400, 
    "message": "Request contains an invalid argument.", 
    "status": "INVALID_ARGUMENT" 
    } 
} 

Stackdriver錯誤報告API已啓用,並且我擁有App Engine項目的所有者權利。

API是否不起作用?如果我做錯了什麼,有人可以幫忙嗎?

回答

1

報告事件的文檔說明ServiceContext is required

如果您只發送消息(不是堆棧跟蹤/例外),則還需要包含context with a reportLocation。這在message字段的文檔中有詳細說明,但並不明顯。

從API瀏覽器中的以下工作:

{ 
"context": { 
    "reportLocation": { 
    "functionName": "My Function" 
    } 
}, 
"message": "error message", 
"serviceContext": { 
    "service": "My Microservice", 
} 
} 

你可能有興趣在How Error are Grouped的文檔了。

FWIW,我在這個產品上工作,我認爲錯誤信息太泛化了。問題是(?)服務堆棧會清理郵件,除非它們被標註爲公共消費。我會追逐的。

+0

接收到請求後,API應該驗證是否存在所有必需的參數。如果它們不存在,那麼API應該拋出一個特定參數丟失的例外。 – Lee

+1

請注意,[JS實現沒有指定reportLocation](https://github.com/GoogleCloudPlatform/stackdriver-errors-js/blob/master/dist/stackdriver-errors-concat.js#L81)。它是在測試JS包裝,我第一次遇到400錯誤,這似乎是這樣的原因。 – Lee

+0

謝謝你指出。請記住,該模塊被標記爲「實驗」 –