在Golang中正确的全局日志记录方法
Go中的应用程序日志记录的模式是什么?如果我有,说,5 goroutines我需要登录,我应该…
>创建一个log.Logger并传递它?
这是可能的。一个log.Logger可以同时使用多个goroutine。
log.New返回一个* Logger,这通常表明你应该作为一个指针传递对象。将它作为值传递将创建结构的副本(即,记录器的副本),然后多个goroutines可能同时写入同一个io.Writer。这可能是一个严重的问题,这取决于作者的实现。
我不会为每个函数或goroutine创建一个单独的记录器。 Goroutines(和函数)用于非常轻量级的任务,这将不能证明维护单独的记录器。这可能是一个好主意,为您的项目的每个更大的组件创建一个记录器。例如,如果您的项目使用SMTP服务发送邮件,则为邮件服务创建单独的记录器听起来是一个好主意,以便您可以分别过滤和关闭输出。
这取决于你的包。在以前的邮件服务示例中,为您的服务的每个实例一个日志记录器可能是个好主意,以便用户可以使用gmail邮件服务时记录失败,而不同于使用本地MTA时发生的失败(例如sendmail )。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |