最近项目中使用到 Log 日志文件打印的方式,主要是使用的 fileLogger 来封装的库,fileLogger是一个基于 Go 开发的可自动分割文件进行备份的异步日志库,具有以下特点:
- 日志文件可按文件大小进行备份,可定制文件大小和数量
- 日志文件可按日期进行备份
- 两种使用模式:
- 不同类型log分别写入不同的文件,使用Print(),Printf(),Println()三个方法
- 不同类型log写入一个文件,但不同LEVEL的日志具有不同的颜色,使用T(),I(),W(),E()等方法,默认日志LEVEL为TRACE
1、安装
$ go get github.com/aiwuTech/fileLogger
2、更新(相当于升级库)
更新FileLogger使用"go get -u"命令
$ go get -u github.com/aiwuTech/fileLogger
3、log 库封装
package log
import (
"github.com/aiwuTech/fileLogger"
"fmt"
)
/*
公共滚动日志库
使用方法:
//0、import log库
//1、必须初始
err := InitLog(logFilePath, logFileName, logLevel, fileCount, fileSize)
if err != nil {
os.Exit(-1)
}
//2、使用
LogFile.Println(...)
LogFile.Printf(...)
LogFile.Print(...)
LogFile.Trace(...)
LogFile.T(...) //Trace()
LogFile.Info(...)
LogFIle.I(...) //Info()
LogFile.Warn(...)
LogFile.W(...) //Warn()
LogFile.Error(...)
LogFile.E(...) //Error()
*/
var (
LogFile *fileLogger.FileLogger
)
/*
* 日志库初始化全局的LogFile指针
* logFilePath 日志文件路径
* logFileName 日志文件名称
* logLevel 日志等级(0:Trace、1:INFO、2:WARN、3:ERROR、4:OFF)
* fileCount 日志文件的数量
* fileSize 文件的大小(MB)
* return error nil:成功 other:参数错误
*/
func InitLog(logFilePath, logFileName string, logLevel uint, fileCount int, fileSize int64) error {
if logFilePath == "" {
return fmt.Errorf("log file path is null")
}
if logFileName == "" {
return fmt.Errorf("log file name is null")
}
if logLevel < 0 || logLevel > 4 {
return fmt.Errorf("log level error")
}
if fileCount <= 0{
return fmt.Errorf("log file count error")
}
if fileSize <= 0{
return fmt.Errorf("log file size error")
}
if LogFile == nil {
LogFile = fileLogger.NewSizeLogger(logFilePath, logFileName, "", fileCount,
fileSize, fileLogger.MB, fileLogger.DEFAULT_LOG_SCAN, fileLogger.DEFAULT_LOG_SEQ)
LogFile.SetLogLevel( (fileLogger.LEVEL)(logLevel))
}
return nil
}
4、初始化&打印日志
package main
import (
. "github.com/company/common/log"
)
func main() {
//初始化日志
log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
logConf := g.Config().Log
err := InitLog("./var/", "app.log", 1, 30, 100)
if err != nil {
log.Fatalln(err)
}
//打印日志
var name = "mic"
LogFile.Println("Hello World:", mic)
}
到此 Go语言Log日志文件打印(fileLogger)介绍完成。