繁体   English   中英

如何通过 log4js-node 将标签传递给 Google Cloud Logs Explorer?

[英]How do you pass labels to Google Cloud Logs Explorer through log4js-node?

我已经使用log4js npm 库和下面的log4js功能成功地将消息及其严重性从 Node 应用程序记录到 Google Cloud Platform 的 Logs Explorer(带有内置日志记录代理的 k8s)。 但是,标签 object 不会记录。

标准输出附加器

"type": "stdout",
   "layout": {
      "type": "json"
   }

添加布局()

log4js.addLayout('json', () => {
  const foo = 'bar';
  const biz = 'baz';

  return (logEvent) => {
    const severity = logEvent.level.levelStr;

    const labels = {
      foo,
      biz,
    };

    const message = `[${logEvent.categoryName}] ${logEvent.data} [${logEvent.level}]`;

    const logEntry = { severity, message, ['logging.googleapis.com/labels']: labels };

    return JSON.stringify(logEntry);
  };
});

按照有关结构化日志记录的 GCP 文档,我还尝试使用labels作为标签键,例如:

const logEntry = { severity, message, labels };

我在log4js文档(或代码)中找不到任何关于将日志条目传递到云日志的内容。 如何传递标签以便 GCP 识别它们并将它们记录在顶级labelsjsonPayloadresource中的labels中:

{
  "insertId": "r286o2xnfzsq955d",
  "jsonPayload": {
    "labels": {},
    "message": "this is my test message"
  },
  "resource": {
    "type": "k8s_container",
    "labels": {
      "namespace_name": "development",
      "container_name": "myContainer",
      "project_id": "123abc",
    }
  },
  "timestamp": "2022-09-15T18:29:41.020140836Z",
  "severity": "INFO",
  "labels": {
    "compute.googleapis.com/resource_name": "gke-machina...",
    "k8s-pod/app": "myApp",
    "k8s-pod/pod-template-hash": "123..."
  },
  "receiveTimestamp": "2022-09-15T18:30:00.835752120Z"
}

发现问题; 我需要在addLayout function 但高于return (logEvent)之前定义内联标签。 对于 GCP, labels是正确的键名。

log4js.addLayout('json', () => {

  return (logEvent) => {
    const severity = logEvent.level.levelStr;

    const labels = {
      foo: 'bar', // define inline here
      biz: 'baz',
    };

    const message = `[${logEvent.categoryName}] ${logEvent.data} [${logEvent.level}]`;

    const logEntry = { severity, message, labels };

    return JSON.stringify(logEntry);
  };
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM