
我們有一個由開發人員創建的內部 Java 應用程序,用於log4j
格式化其日誌訊息。最近,我們開始在 Google Kubernetes Engine 上運行它,因此日誌會自動從標準輸出傳輸到 Stackdriver。但是,所有日誌均以嚴重性等級顯示INFO
。其中一則訊息的 textPayload 開頭如下:
18 Jul 2019 10:11:32.334 [ERROR] [req=api-test--870259294-18071111-11 sess=cwfscqttcfqh1acsictx3toxv reqMs=4]
開發人員的意圖顯然是這是一條ERROR
嚴重性訊息,但因為他們在建立應用程式時沒有考慮到 Stackdriver,所以它是非結構化的並報告為嚴重性INFO
。
必須更改應用程式以尊重我們使用的集中式日誌記錄感覺是錯誤的;我們的客戶可能會使用其他日誌記錄解決方案。有沒有辦法讓 Stackdriver 使用 textPayload 來確定嚴重性?我在 Google Kubernetes Engine 上運行,因此我沒有設定任何日誌記錄基礎設施,也沒有任何超出 Google 提供的存取權限。
我有興趣進行此更改,因為 Google Cloud Platform 的錯誤報告是追蹤錯誤訊息的強大工具,但它僅適用於嚴重性ERROR
或更高嚴重性的日誌。簡單地在 Stackdriver 中建立日誌指標無法為我提供所需的控制。
答案1
快速的答案是否定的,您將需要更改程式碼並為每個訊息實施正確的日誌記錄以及正確的嚴重性。您可以將 Stackdriver 日誌匯出到 BigQuery(這是正常做法),然後執行更複雜的查詢。
您可以在這裡找到一些有用的連結: