go开发属于自己的日志库
文章平均质量分 50
go开发属于自己的日志库
文艺青年o好像不是我
这个作者很懒,什么都没留下…
展开
-
go开发属于自己的日志库-日志切分
在文件日志中,还存在一个问题,就是在日志写文件时间长了以后,日志文件肯定会非常大,内容非常多,这个时候如果我们需要去定位一个错误,会耗费很长的时间。所以我们需要将日志文件进行分割,分割文件我们可以采用一天分割一次,或者文件大小达到一个体积进行分割。log_const.goconst ( LogSplitTypeHour = iota LogSplitTypeSize)file.go...原创 2018-11-09 14:37:41 · 1319 阅读 · 0 评论 -
go开发属于自己的日志库-日志库优化
日志库基本上写完了,但是就完成了,还没有。目前来说,我们的文件写日志的方式采用同步方式,如果在大量日志写入的时候,同步写入的缺陷就暴露出来了。而且日志跟我们的业务逻辑也没有什么太大的关系,哪怕掉了几条也没什么影响,所以这里可以将同步写改为异步写。这里采用go的channel进行异步写日志。在业务调用写日志时,将日志数据写入channel中起一个后台线程不断的从channel中取日志,然...原创 2018-11-09 14:37:07 · 389 阅读 · 0 评论 -
go开发属于自己的日志库-日志库易用性封装
文件日志和console日志也完成了,我们试试在其他其他使用一下。在我们之前的server中,main.go输入一下代码:package mainimport "hm_log"var log hm_log.Logfunc initLog(logPath, logName string) { //log := hm_log.NewFileLog(logPath, logName...原创 2018-11-09 14:36:26 · 220 阅读 · 0 评论 -
go开发属于自己的日志库-控制台日志实现
上一篇中我们将文件日志库基本实现了,我们现在再讲console日志库实现,那我们的日志库也基本就可以完成了。新建console.go,把我们console日志库也实现了。因为console日志库只是将日志输出到终端里面。package hm_logimport ( "fmt" "os")type ConsoleLog struct{}func NewConsoleLog() ...原创 2018-11-09 14:35:58 · 569 阅读 · 0 评论 -
go开发属于自己的日志库-文件日志库实现
上一篇中我们已经把日志写入文件中了,但是还有一些问题,可以看到我们日志内容没有记录时间,也没有日志级别。错误日志,没有错误的文件和行号,也不知道在哪个函数出错的,这些我们也是需要加入进去的。所以,我们的日志打印的内容应该是这样的:2018-11-08 18:18:18.888 DEBUG [logDebug.go/logDebug.Debug:20] this is a debug log...原创 2018-11-09 14:35:31 · 598 阅读 · 1 评论 -
go开发属于自己的日志库-文件日志库原型实现
上一篇中已经讲述了日志库的需求,这一篇中我们来实现日志库的原型。新建一个项目,这里我用的hm_log,在项目下新建一个log_interface.go日志规范,定义日志级别的方法:package hm_logtype Log interface { Debug(format string, args ...interface{}) // ...表示接收可变参数 Trace(format...原创 2018-11-09 14:34:53 · 265 阅读 · 0 评论 -
go开发属于自己的日志库-日志库需求分析
go的第三方框架中已经有很多日志库了,为什么还要自己写一遍。俗话说,好记性不如烂笔头,更何况是编程语言呢。多写多练才能使自己技术进步。一般来说,日志库支持文件写入和console显示,还有的支持写入在网络服务中,这次的日志库,只需要实现文件写入和console就可以了。1、首先我们需要定义日志的打印级别:Debug: 调试程序,日志最详细。但是会影响程序的性能。Trace: 追踪问题。...原创 2018-11-09 14:34:21 · 257 阅读 · 0 评论