首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nodejs在google中编写原始负载-云/日志记录

nodejs在google中编写原始负载-云/日志记录
EN

Stack Overflow用户
提问于 2017-04-21 09:36:27
回答 2查看 903关注 0票数 2

如何在NodeJS中使用google/logging包传递原始负载联合标签?

到目前为止,我能够在日志中编写textPayload和jsonPayload。

尝试使用google和protobufjs创建协议缓冲区,甚至尝试过协议缓冲包,但是当我执行log.entry和log.write时,日志中看不到有效负载。

这是编写日志的代码。

//writelogs.j

代码语言:javascript
复制
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

代码语言:javascript
复制
message Test {
  required float num  = 1;
  required string payload = 2;
}

编写代码是从github的nodejs示例中复制的,而我自己对protopayload的修改很少。只为jsonPayload和textPayload编写示例日志。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-29 03:44:24

不允许为日志API中的protoPayload字段使用任意协议缓冲区。只有少数几个具有著名描述符的Google平台服务被允许在这一领域使用。

对于任意的结构化日志记录,您应该使用jsonPayload字段。

有关这些字段的更多信息记录在:https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry中。

票数 4
EN

Stack Overflow用户

发布于 2018-01-26 19:43:13

为了完整起见,我张贴我最后的评论作为回答。

使用堆栈驱动程序日志查看器时,请确保正在查看写入日志的正确的“logName”和“resource.type”。

还请确保您的“test.proto”遵循Google协议缓冲语言指南。如果您正在查看日志,但没有看到有效负载,则此问题很可能是由于编码器造成的。您可以尝试使用google-protobuf作为“协议缓冲区”的替代方案。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43539160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档