
弊社の開発者が作成した社内 Java アプリケーションでは、log4j
ログ メッセージをフォーマットするために を使用しています。最近、これを Google Kubernetes Engine で実行し始めたため、ログは自動的に stdout から Stackdriver にパイプされます。ただし、すべてのログは重大度レベル で表示されますINFO
。そのようなメッセージの 1 つには、次のように始まる 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
重大度が 1 以上のログにのみ適用されるためです。Stackdriver でログのメトリックを作成するだけでは、必要な制御は得られません。
答え1
簡単に答えると、いいえです。コードを変更し、各メッセージの正しい重大度で適切なログ記録を実装する必要があります。Stackdriver ログを BigQuery にエクスポートし (これは通常の方法です)、より複雑なクエリを実行できます。
ここにいくつかの役立つリンクがあります: