将低级调试/跟踪日志语句保留在关键路径中很有用,以便可以通过运行时配置启用它们。这个想法是您永远不会在生产环境中打开此类日志记录(这会削弱性能),但您可以在生产环境中打开它环境(例如,生产系统脱机进行调试或一个与生产系统完全一样的测试系统。)这种类型的日志记录有一个特殊要求:在关键路径上点击禁用日志语句的成本必须非常低:理想情况下是单个bool测试。在C/C++中,我将使用LOG宏来执行此操作,该宏在检查标志之前不会评估其任何参数。只有启用后,我们才会调用一些辅助函数来格式化和传递日志消息。那么如何在Go中做到这一点?将io.Discard与log.Logger一起使用是不可取的:它每
将低级调试/跟踪日志语句保留在关键路径中很有用,以便可以通过运行时配置启用它们。这个想法是您永远不会在生产环境中打开此类日志记录(这会削弱性能),但您可以在生产环境中打开它环境(例如,生产系统脱机进行调试或一个与生产系统完全一样的测试系统。)这种类型的日志记录有一个特殊要求:在关键路径上点击禁用日志语句的成本必须非常低:理想情况下是单个bool测试。在C/C++中,我将使用LOG宏来执行此操作,该宏在检查标志之前不会评估其任何参数。只有启用后,我们才会调用一些辅助函数来格式化和传递日志消息。那么如何在Go中做到这一点?将io.Discard与log.Logger一起使用是不可取的:它每
我正在尝试编写一个将在远程服务器上运行的Web应用程序。我需要记录以捕获错误/调试/审核。我发现有多个日志包可用于golang,包括标准的“日志”包。但是,我需要满足三个要求:日志文件需要轮换它适用于包含的软件包其中使用“日志”它需要是跨平台的。开发环境是Linux,需要部署在Windows上。 最佳答案 虽然@Crast给出了很好的答案,但我也想提一下-lumberjack记录器NateFinch我最终使用了。这里是如何使用它:首先,克隆lumberjack存储库或以某种方式获取它。对文件夹运行goinstall命令。现在导入go
我正在尝试编写一个将在远程服务器上运行的Web应用程序。我需要记录以捕获错误/调试/审核。我发现有多个日志包可用于golang,包括标准的“日志”包。但是,我需要满足三个要求:日志文件需要轮换它适用于包含的软件包其中使用“日志”它需要是跨平台的。开发环境是Linux,需要部署在Windows上。 最佳答案 虽然@Crast给出了很好的答案,但我也想提一下-lumberjack记录器NateFinch我最终使用了。这里是如何使用它:首先,克隆lumberjack存储库或以某种方式获取它。对文件夹运行goinstall命令。现在导入go
我知道我们可以使用log和fmt打印变量或错误。例如,如果我想打印变量,我可以这样做:h:="world"fmt.Printf("hello=%v\n",h)log.Printf("halo=%v\n",h)输出将是:hello=world2016/12/3009:13:12halo=world通常在错误处理中我发现这样的日志iferr!=nil{log.Println("Error:somethingterriblehappen->",err)returnerr}但从上述情况我也可以使用fmt来打印这样的错误fmt.Printf("Error:somethingterriblehap
我知道我们可以使用log和fmt打印变量或错误。例如,如果我想打印变量,我可以这样做:h:="world"fmt.Printf("hello=%v\n",h)log.Printf("halo=%v\n",h)输出将是:hello=world2016/12/3009:13:12halo=world通常在错误处理中我发现这样的日志iferr!=nil{log.Println("Error:somethingterriblehappen->",err)returnerr}但从上述情况我也可以使用fmt来打印这样的错误fmt.Printf("Error:somethingterriblehap
在哪里可以读取调用函数创建的日志:log.Print("Message")Main下的“Logs”选项卡似乎只显示有关调用的URL的信息,但没有任何应用程序显示的调试信息。 最佳答案 如documentation中所述,如果您希望日志显示在控制台中,则应使用Context接口(interface)而不是log接口(interface)进行日志记录。c:=appengine.NewContext(r)c.Infof("RequestedURL:%v",r.URL) 关于google-app
在哪里可以读取调用函数创建的日志:log.Print("Message")Main下的“Logs”选项卡似乎只显示有关调用的URL的信息,但没有任何应用程序显示的调试信息。 最佳答案 如documentation中所述,如果您希望日志显示在控制台中,则应使用Context接口(interface)而不是log接口(interface)进行日志记录。c:=appengine.NewContext(r)c.Infof("RequestedURL:%v",r.URL) 关于google-app
在golang中是否有任何好的包装器可用于基于级别的日志记录?如果没有,我应该如何自己实现?我想要的很简单。我想要一些功能,例如log.Error()log.Info()等将它们的输出显示到标准输出并将它们保存在日志文件中(基于作为命令行参数给予程序的级别)。如何实现这个包装器? 最佳答案 一些更多建议,现在现有的答案已经很老了:https://github.com/op/go-logging-这里比另一个小https://github.com/sirupsen/logrus-用于许多流行的项目,例如Dockerhttps://gi
在golang中是否有任何好的包装器可用于基于级别的日志记录?如果没有,我应该如何自己实现?我想要的很简单。我想要一些功能,例如log.Error()log.Info()等将它们的输出显示到标准输出并将它们保存在日志文件中(基于作为命令行参数给予程序的级别)。如何实现这个包装器? 最佳答案 一些更多建议,现在现有的答案已经很老了:https://github.com/op/go-logging-这里比另一个小https://github.com/sirupsen/logrus-用于许多流行的项目,例如Dockerhttps://gi