Golang Log 学习笔记
官方Doc链接
简介
译 : [f|ln]对于本包的接口,往往会有3个版本 : XXX,XXXf 和 XXXln,含义分别是 :打印 , 格式化打印, 打印并换行 。 接口打印不同等级的log
设置logger熟悉
定制自己的Loggerpackage log_test
import "log"
import "os"
import "runtime"
import "fmt"
type LogServer struct {
logger *log.Logger
file *os.File
thread_num uint32
file_name chan string
log_buffer chan string
End chan bool
}
func NewLogger() (*log.Logger,*LogServer) {
new_log := new(LogServer)
new_log.logger = log.New(new_log,"",log.Ldate|log.Ltime|log.Lshortfile)
new_log.file_name = make(chan string)
new_log.log_buffer = make(chan string )
new_log.End = make(chan bool)
go new_log.InitLogThread()
return new_log.logger,new_log
}
func (this *LogServer) InitLogThread() {
for {
select {
case file_name,ok := <-this.file_name:
if ok {
this.UseFile(file_name)
}else {
fmt.Println("NO")
}
case a_log,ok := <-this.log_buffer:
if ok {
this.RealLog(a_log)
}else {
fmt.Println("NO")
}
case end,ok:= <-this.End:
if end && ok {
break
}else {
fmt.Println("NO")
}
}
}
}
func (this *LogServer) UseFile(file_name string) {
t_file,err := os.Create(file_name)
if err != nil || t_file == nil {
return
}else {
if this.file != nil {
this.file.Close()
}
this.file = t_file
}
}
func (this *LogServer) RealLog(p string) {
if this.file != nil {
this.file.Write([]byte(p))
}else {
fmt.Println(string(p))
}
}
func (this *LogServer) Write(p []byte) (n int,err error) {
this.log_buffer <- string(p)
return len(p),nil
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |