[root@local t2] #去构建logTest1.go   (root@local t2) #。/logTest1   [root@local t2] #猫test1.log   (调试)2017/06/13 23:18:36 logTest1。:19:测试调试消息   [信息]2017/06/13 23:18:36 logTest1。:21:测试信息消息   [root@local t2] #      

  

去语言的日志模块没有提供日志旋转接口,但实际开发中我们需要该功能:

  

我们不希望单个日志过大,否则文本编辑器无法打开,查看比较困难;

  

更不希望占用太大的存储空间,可以指定最多存多少个日志文件。

  

  

借助带缓冲的通道来实现。

  

<强>示例代码如下:

     /*   golang日志旋转的例子      */主要包      导入(   “fmt”   “日志”   “操作系统”   “时间”   )      常量(   BACKUP_COUNT=5   MAX_FILE_BYTES=2 * 1024   )      func doRotate (fPrefix字符串){   j:=BACKUP_COUNT;j祝辞=1;j - {   curFileName:=fmt.Sprintf (“% s_ % d.log fPrefix, j)   凯西:=j - 1   preFileName:=fmt.Sprintf (“% s_ % d.log fPrefix, k)      如果k==0 {   preFileName=fmt.Sprintf (“% s。日志”,fPrefix)   }   _,犯错:=os.Stat (curFileName)   如果做错了==nil {   os.Remove (curFileName)   fmt。Println(“删除:“curFileName)   }   _,呃=os.Stat (preFileName)   如果做错了==nil {   fmt。Println (“preFileName重命名:“,”=比;”,curFileName)   呃=操作系统。重命名(preFileName curFileName)   如果犯错!=nil {   fmt.Println (err)   }   }   }   }      func NewLogger (fPrefix字符串)(*日志。记录器,* os.File) {   var记录器* log.Logger   文件名:=fmt.Sprintf (“% s。日志”,fPrefix)   fmt。Println(文件名:文件名)   日志文件,犯错:=操作系统。OpenFile(文件名,os.O_RDWR | os.O_CREATE |操作系统。O_APPEND, 0666)      如果犯错!=nil {   fmt。Println(“打开文件错误!”)   其他}{   记录器=日志。新(日志文件,“(调试)”,log.Ldate | log.Ltime | log.Lshortfile)   }   返回日志,日志文件   }      func logWorker (msgQueue & lt;脚板字符串){   fPrefix:=拔毒?   日志,日志文件:=NewLogger (fPrefix)   味精:=范围msgQueue {   logger.Println(味精)   fi err2:=logFile.Stat ()   如果err2==nil {   如果fi.Size()在MAX_FILE_BYTES {   logFile.Close ()   doRotate (fPrefix)   日志,日志文件=NewLogger (fPrefix)   }   }   }   logFile.Close ()   }      函数main () {   陈msgQueue:=(字符串,1000)   去logWorker (msgQueue)      j:=1;j & lt;=1000;j + + {   msgQueue & lt;——fmt。Sprintf (“msg_ % d j)   时间。睡眠(1 * time.Second)   }   关上(msgQueue)   返回   }      

运行效果如下:

        (root@local t2) #。/logRotateTest1   文件名:msg.log   重命名:味精。日志=比;msg_1.log   文件名:msg.log   重命名:msg_1。日志=比;msg_2.log   重命名:味精。日志=比;msg_1.log   文件名:msg.log   重命名:msg_2。日志=比;msg_3.log   重命名:msg_1。日志=比;msg_2.log   重命名:味精。日志=比;msg_1.log   文件名:msg.log   ^ C      


  

  

这里只是个简单的示例代码,实现了日志旋转,更多功能需自行开发。

  

好,就这些了,希望对你有帮助。

  

以上这篇golang之日志旋转详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。