package main
import (
"fmt"
"github.com/toolkits/pkg/logger"
"os"
)
type Config struct {
Dir string `yaml:"dir"`
Level string `yaml:"level"`
KeepHours uint `yaml:"keepHours"`
}
//详情请看https://github.com/toolkits/pkg/tree/master/logger
func main() {
//模拟从配置文件获取到了数据,如何获取看前一篇配置文件使用
c := Config{
Dir: "logs",
//只输出>=INFO的日志
Level: "INFO",
KeepHours: 24,
}
Init(c)
defer logger.Close()
logger.Info("info")
logger.Error("error")
logger.Warning("WARNING")
//level为INFO, Debug无输出
logger.Debug("Debug")
//测试的时候记得close或sleep几秒,不然日志文件没有写入
//time.Sleep(10*time.Second)
}
// InitLogger init logger toolkit
func Init(c Config) {
lb, err := logger.NewFileBackend(c.Dir)
if err != nil {
fmt.Println("cannot init logger:", err)
os.Exit(1)
}
//来开启按小时滚动
lb.SetRotateByHour(true)
//保留24小时的log
lb.SetKeepHours(c.KeepHours)
logger.SetLogging(c.Level, lb)
}
具体内容:从src/modules/agent/agent.go的main函数开始
// src/modules/agent/agent.go
func main() {
//配置文件相关
parseConf()
//从此处开始
//日志相关
//日志配置已通过上一步配置文件相关获取,此处直接使用
//Logger字段类型为loggeri.Logger类型, loggeri.Init可直接使用此类型接收(c Logger)
loggeri.Init(config.Config.Logger)
// src/common/loggeri/logger.go
package loggeri
import (
"fmt"
"os"
"github.com/toolkits/pkg/logger"
)
type Config struct {
Dir string `yaml:"dir"`
Level string `yaml:"level"`
KeepHours uint `yaml:"keepHours"`
}
// InitLogger init logger toolkit
func Init(c Config) {
lb, err := logger.NewFileBackend(c.Dir)
if err != nil {
fmt.Println("cannot init logger:", err)
os.Exit(1)
}
lb.SetRotateByHour(true)
lb.SetKeepHours(c.KeepHours)
logger.SetLogging(c.Level, lb)
}