使用golang日志记录库,哪里可以看到localhost日志? 更新

问题描述

如果在golang library instructions之后使用客户端库编写日志,在开发过程中本地运行服务器时(例如通过go run main.go)在哪里可以看到这些日志?

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

解决方法

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

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

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

同时,我想将您的问题发布到Google的Stackdriver Log(link)公共问题跟踪器中会有所帮助,我将问一个非常熟悉Cloud Logging的人对我们有一些了解。

更新

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

,

tl; dr 暂时回答:不支持-相反,如果env(例如,空GAE_INSTANCE env变量)表明您在在本地主机上。

遍历日志记录包上NewClient(...)调用下的代码,我最终发现了一个真正被调用上游API的地方(请注意rpc context used by the very last turtle-在遍历的过程中我从未见过逻辑似乎正在切换到本地开发的东西),所以我怀疑确实没有仿真捕获。


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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...