如何使用记录器将错误记录到堆栈驱动程序中?
Posted
技术标签:
【中文标题】如何使用记录器将错误记录到堆栈驱动程序中?【英文标题】: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
工具有一个测试版日志记录解决方案,但我希望避免安装它需要的额外组件。
【问题讨论】:
【参考方案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
生成消息吗?
如果可能的话,我想避免安装额外的组件,尤其是那些需要手动配置的组件。以上是关于如何使用记录器将错误记录到堆栈驱动程序中?的主要内容,如果未能解决你的问题,请参考以下文章