8

我有一个运行 Go 的 20 个节点的 GKE 应用程序。我想合并所有日志以在 Google Developers Console 日志查看器中查看,但我遇到了 2 个问题。我无法获得严重性过滤,并且我的日志消息中的每个换行符都会在查看器中启动一个新的日志条目(日志中的换行符有问题)。

我有 google-fluent-d 设置,因此所有标准输出都记录在云中,并且我使用了 log.Lshortfile、调用深度和 log.Logger.Output 从“日志”库中获取文件名和行号。

我看过这个库:“google.golang.org/cloud/logging”,但我无法让它工作。

是否有某个库或在 GKE 和 GCE 中编写日志的最佳方式的示例?

4

2 回答 2

7

根据您的雄心壮志,您可以做几件事。

最简单的选择可能是将您的日志记录格式切换为 JSON。google-fluentd 代理会自动为您解析 JSON,将每条消息的结构化数据导出到云日志 API。如果字段在 JSON 中,它将自动获取严重性信息severity,并且使用 JSON 可以防止它在消息中中断(转义)换行符。

更艰难(但更灵活)的选择是让您发现工作的客户端库。我不确定它是否与您链接的相同,但我相信这是最新的。如果您可以提供有关您遇到的问题的更多背景信息,我可以帮助或与云日志记录团队的某个人争吵以提供帮助。

于 2016-02-25T21:25:24.227 回答
0

我使用了自定义日志记录类,而不是记录每条消息,而是将它们保存在一个变量中,并在服务器响应后发送它——所以我最终在谷歌云中只有一个日志记录,每个请求都有很长的 textPayload。

自定义日志记录类如下所示:

class CustomLogging {
   
    messages = "";

    log(message) {
        this.messages += '\n' + message;
    }

    sendLogs(message) {
        console.log(this.messages);
    }

}

每个请求日志如下所示:

在此处输入图像描述

于 2020-12-15T14:09:25.737 回答