私はStackdriverログを処理するためにデータフローパイプラインを構築しています。データはPub/Subから読み込まれ、結果はBigQueryに書き込まれます。 Pub/Subから読み込むと、LogEntryオブジェクトのJSON文字列が取得されますが、実際に興味があるのは、ユーザログメッセージを含むprotoPayload.line
レコードです。私はLogEntry
JSONオブジェクトを解析する必要がそれらを取得し、私はGoogle example 2歳がそれを行う方法を見つけるために:Parse Stackdriver LogEntry JSON with Dataflow pipeline
import com.google.api.client.json.JsonParser;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.services.logging.model.LogEntry;
try {
JsonParser parser = new JacksonFactory().createJsonParser(entry);
LogEntry logEntry = parser.parse(LogEntry.class);
logString = logEntry.getTextPayload();
}
catch (IOException e) {
LOG.error("IOException parsing entry: " + e.getMessage());
}
catch(NullPointerException e) {
LOG.error("NullPointerException parsing entry: " + e.getMessage());
}
を残念ながら、これはlogEntry.getTextPayload()
戻りnull
、私のために動作しません。私はそれがcom.google.api.services.logging
Google Cloudドキュメントのどこにも言及されていないとして動作すると思われるかどうかはわかりません。現在のログライブラリはgoogle-cloud-loggingのようです。
誰かがLogEntry
オブジェクトを解析するための正しい方法または最も簡単な方法を提案できますか?