【问题标题】:How to use logger to log an error into stackdriver?如何使用记录器将错误记录到堆栈驱动程序中?
【发布时间】:2017-08-19 22:14:54
【问题描述】:

我有一个在谷歌计算云上运行的 VM 微实例,我想将错误消息记录到 stackdriver。这个页面https://cloud.google.com/logging/docs/agent/installation显示了这个例子

logger "Some test message"

这对于普通消息非常有用,但我希望 stackdriver 将某些消息识别为错误,以便它们会显示在这里 https://console.cloud.google.com/errors,这样我就可以收到电子邮件通知。

我知道gcloud 工具有一个测试版日志记录解决方案,但我希望避免安装它需要的额外组件。

【问题讨论】:

    标签: google-cloud-platform google-compute-engine syslog fluentd stackdriver


    【解决方案1】:

    您需要在https://cloud.google.com/error-reporting/docs/formatting-error-messages 阅读有关格式化的文档

    类似:

      {
       "message": "Some test message",
       "context": {
         "reportLocation": {
           "functionName": "my_function"
        }
       },
       "serviceContext": {
         "service": "my service",
       }
      }
    

    您需要将消息作为日志条目的jsonPayload,而不是textPayload。我相信代理会自动识别 JSON 消息,但如果还有非 JSON 消息,它可能会在所有情况下都使用文本。在这种情况下,使用专用日志记录错误应该会有所帮助。

    您可能还对有关消息如何组合在一起的文档感兴趣:https://cloud.google.com/error-reporting/docs/grouping

    【讨论】:

    • 感谢您的回答。我已经用logger "$json"(在shell中)尝试了你的例子,它出现在stackdriver中,但没有出现在错误报告器中。我也尝试过同样的事情,但用\n 替换新行就像json='{\n "message": "Some test message",\n "context": {\n "reportLocation": {\n "functionName": "my_function"\n }\n },\n "serviceContext": {\n "service": "my service",\n }\n }'
    • 在云控制台日志查看器中展开日志条目时,(json, text, proto)中的内容是什么payload类型?
    • 我认为这只是文字,但这里是回复gist.github.com/bijoutrouvaille/…
    • textPayload 是诀窍。看起来代理没有完全解析系统日志条目。如果消息是例如在一个文件中,我怀疑它会更好。您打算长期使用logger 生成消息吗?
    • 如果可能的话,我想避免安装额外的组件,尤其是那些需要手动配置的组件。
    猜你喜欢
    • 2022-08-14
    • 2019-04-16
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 2019-01-11
    • 2019-09-06
    • 1970-01-01
    • 2010-12-29
    相关资源
    最近更新 更多