2017-04-21 3 views
1

NodeJSのgoogle-cloud/loggingパッケージを使用してprotopayloadユニオンラベルを渡すにはどうすればよいですか?google-cloud/loggingのprotopayloadを作成するnodejs

これまでのところ、ログにtextPayloadとjsonPayloadを書き込むことができました。

google-protobufとprotobufjsを使用してプロトコルバッファを作成しようとしましたが、プロトコルバッファパッケージを試してみましたが、log.entryとlog.writeを実行するとペイロードはログに表示されません。

これは、書き込みコードはgithubのからnodejs-DOC-サンプルからコピーされる書き込みログ
//writelogs.js

function writeLogEntryAdvanced (logName, options, callback) { 
    var logging = Logging(); 
    var log = logging.log(logName); 
var protobuf = require('protocol-buffers'); 
var fs = require('file-system'); 
// pass a proto file as a buffer/string or pass a parsed protobuf-schema object 
var messages = protobuf(fs.readFileSync('test.proto')); 
var buf = messages.Test.encode({ 
    num: 42, 
    payload: 'hello world' 
}); 
console.log(buf); 
var entry = log.entry({ resource: options.resource }, buf); 
    // See https://googlecloudplatform.github.io/google-cloud-node/#/docs/logging/latest/logging/log?method=write 
    log.write(entry, function (err, apiResponse) { 
    if (err) { 
     return callback(err); 
    } 
    console.log('Wrote entry to log: %s', logName); 
    return callback(null, apiResponse); 
}); 
} 

//test.proto

message Test { 
    required float num = 1; 
    required string payload = 2; 
} 

するためのコードでありますprotopayloadのために私自身の変更はほとんどありません。 サンプルログの書き込みは、jsonPayloadおよびtextPayloadに対してのみ行われました。

+2

[Stackdriver Logs Viewer](https://console.cloud.google.com/logs/viewer)を使用している場合は、ログを書き込んでいる正しい 'logName'と 'resource.type'を表示していることを確認してくださいに。また、「test.proto」が[Google Protocol Buffer言語ガイド](https://developers.google.com/protocol-buffers/docs/proto3#simple)に従っていることを確認してください。ログは表示されますが、ペイロードは表示されない場合は、エンコーダが原因である可能性があります。 'protocol-buffers'の代わりに[google-protobuf](https://www.npmjs.com/package/google-protobuf)を試してみることもできます。 – Jordan

+0

@jordanはい、ログを見ることはできますが、ペイロードは見ることができません。代わりにgoogle-protobufを試してみます。 ありがとう – Root

+0

問題の解決策を見つけられましたか?もしそうならコミュニティへのより良い助けになるように答えとして投稿することをお勧めします。 – Jordan

答えて

2

Logging APIのprotoPayloadフィールドに任意のプロトコルバッファを使用することはできません。この分野では、よく知られた記述子を使用したGoogle Cloud Platformサービスはごくわずかしか使用できません。

任意の構造化ロギングでは、jsonPayloadフィールドを使用する必要があります。

これらのフィールドの詳細については、https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntryに記載されています。

1

私は最後のコメントを回答として投稿しています。

Stackdriver Logs Viewerを使用する場合は、ログを書き込む正しい「logName」と「resource.type」を表示していることを確認してください。

また、 'test.proto'がGoogle Protocol Buffer language guideの後にあることを確認してください。ログは表示されますが、ペイロードは表示されない場合は、エンコーダが原因である可能性があります。 'protocol-buffers'の代わりにgoogle-protobufを試してみることもできます。

関連する問題