【问题标题】:using golang logging library, where does one see localhost logs?使用 golang 日志库,在哪里可以看到 localhost 日志?
【发布时间】:2020-09-14 00:11:34
【问题描述】:

如果您使用客户端库编写日志,请遵循golang library instructions,当在开发期间本地运行您的服务器(例如通过go run main.go)时,在哪里可以看到这些日志?

在我的情况下(不确定它是否相关)我正在使用该库作为 appengine 中 golang 逻辑的一部分,甚至 relevant-looking instructions on "viewing logs" for those docs 也没有明确提及本地开发。这是因为它(运行 gcloud app logs tail 并查看本地服务器日志)应该“正常工作”还是因为无法查看本地日志 sdk 交互的日志?

【问题讨论】:

    标签: google-app-engine gcloud google-cloud-logging


    【解决方案1】:

    这是一个很好的问题,Cloud Logging 库似乎确实与 Google 的 Cloud Logging 服务绑定,但对于本地开发(您的问题)以及松散耦合作为一个普遍好的原则,这些库确实应该是可插拔的。为什么服务不应该运行在例如GCP 路由日志到例如AWS?

    通过OpenTelemetry (nee OpenCensus),Google(和其他人)提升了将度量和跟踪生产与消费服务断开连接的能力,并且日志没有明显不同。

    Go 中流行的日志库,Logrus 通过Hooks 支持可插入日志记录,并且存在旧的(!)Stackdriver Logging 实现;这应该很容易升级到当前的 API(版本)。

    同时,我认为将您的问题发布到 Google 的 Stackdriver(原文如此。)日志记录 (link) 的公共问题跟踪器会有助于您的问题,我将询问非常熟悉 Cloud Logging 的人,因为她可能有一些为我们深入了解这一点。

    更新

    我与 Google 的一些前同事发了电子邮件,了解到 Open Telemetry 最终将包含日志记录。项目的About 页面上简要提及了这一点。

    【讨论】:

      【解决方案2】:

      tl;dr 试探性地回答自己:不支持 - 相反,如果 env(例如空的 GAE_INSTANCE env 变量)表明您在本地主机上,则必须有条件地交换对常规记录器的调用.

      浏览 logging 包上 NewClient(...) 调用下的代码,我最终找到了一个真正调用上游 API 的地方(注意 rpc context used by the very last turtle - 我在浏览时从未看到逻辑似乎是切换到本地开发的东西),所以我怀疑真的没有模拟捕获。


      编辑:见DazWilkin's helpful answer below for more context

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-17
        • 2018-08-11
        • 2018-07-02
        • 1970-01-01
        • 2022-08-17
        • 1970-01-01
        • 2018-10-31
        • 2019-11-11
        相关资源
        最近更新 更多