redis-shake工具
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

49 lines
1.3 KiB

package log
import (
"fmt"
"github.com/rs/zerolog"
"os"
"path/filepath"
)
var logger zerolog.Logger
func Init(level string, file string, dir string) {
// log level
switch level {
case "debug":
zerolog.SetGlobalLevel(zerolog.DebugLevel)
case "info":
zerolog.SetGlobalLevel(zerolog.InfoLevel)
case "warn":
zerolog.SetGlobalLevel(zerolog.WarnLevel)
default:
panic(fmt.Sprintf("unknown log level: %s", level))
}
// dir
dir, err := filepath.Abs(dir)
if err != nil {
panic(fmt.Sprintf("failed to determine current directory: %v", err))
}
err = os.RemoveAll(dir)
if err != nil {
panic(fmt.Sprintf("remove dir failed. dir=[%s], error=[%v]", dir, err))
}
err = os.MkdirAll(dir, 0777)
if err != nil {
panic(fmt.Sprintf("mkdir failed. dir=[%s], error=[%v]", dir, err))
}
path := filepath.Join(dir, file)
// log file
consoleWriter := zerolog.ConsoleWriter{Out: os.Stdout, TimeFormat: "2006-01-02 15:04:05"}
fileWriter, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666)
if err != nil {
panic(fmt.Sprintf("open log file failed. file=[%s], err=[%s]", path, err))
}
multi := zerolog.MultiLevelWriter(consoleWriter, fileWriter)
logger = zerolog.New(multi).With().Timestamp().Logger()
Infof("log_level: [%v], log_file: [%v]", level, path)
}