Commit 49627f30 authored by Tsaiilin's avatar Tsaiilin

logger: 日志文件及日志级别功能修改

1. 日志文件只保留run、error、trace三种,去除的类型除error外都会输入到run中
2. 日志级别从数字指定改变为使用 debug info error
   等指定,兼容之前的配置文件,如果无法识别的字符串会默认为 info 级别
3. debug 模式下日志会同时输出到控制台和文件,其他模式只输出到文件
parent aefd6aa8
......@@ -24,7 +24,7 @@ import (
var (
configure string
logLevel int
logLevel string
pprofPort int
natServer string
account string
......@@ -45,7 +45,7 @@ var (
func init() {
rand.Seed(time.Now().UnixNano())
flag.StringVar(&configure, "conf", "", "./majora -c path/to/your/majora.ini")
flag.IntVar(&logLevel, "log", 1, "log logLevel")
flag.StringVar(&logLevel, "log", "info", "log logLevel")
flag.IntVar(&pprofPort, "pprof", 0, "enable pprof")
flag.StringVar(&natServer, "natServer", common.DefNatAddr, "natServer")
flag.StringVar(&account, "account", "unknown", "account")
......@@ -57,7 +57,7 @@ func init() {
}
func initial(cfg *model.Configure) {
log.Init(cfg.LogLevel - 1)
log.Init(cfg.LogLevel)
if cfg.PprofPort > 0 {
go func() {
addr := fmt.Sprintf("127.0.0.1:%d", cfg.PprofPort)
......
This diff is collapsed.
......@@ -21,31 +21,31 @@ func (m *MajoraEventListener) OnOpen(session getty.Session) error {
extraMap[common.ExtrakeyUser] = m.client.config.Extra.Account
packet.Data = protocol.EncodeExtra(extraMap)
if _, _, err := session.WritePkg(packet, time.Second*10); err != nil {
log.Event().Errorf("register to server error %+v", err)
log.Error().Errorf("register to server error %+v", err)
return err
}
log.Event().Infof("[OnOpen] registe to %s success", m.client.config.TunnelAddr)
log.Run().Infof("[OnOpen] registe to %s success", m.client.config.TunnelAddr)
return nil
}
func (m *MajoraEventListener) OnClose(session getty.Session) {
log.Event().Errorf("OnClose-> session closed %v", session.IsClosed())
log.Error().Errorf("OnClose-> session closed %v", session.IsClosed())
m.client.CloseAll(session)
}
func (m *MajoraEventListener) OnError(session getty.Session, err error) {
log.Event().Errorf("OnError %s", err.Error())
log.Error().Errorf("OnError %s", err.Error())
m.client.CloseAll(session)
}
func (m *MajoraEventListener) OnCron(session getty.Session) {
log.Event().Warnf("thread:%d session closed %v", runtime.NumGoroutine(), session.IsClosed())
log.Run().Warnf("thread:%d session closed %v", runtime.NumGoroutine(), session.IsClosed())
m.client.Redial(session)
}
func (m *MajoraEventListener) OnMessage(session getty.Session, input interface{}) {
majoraPacket := input.(*protocol.MajoraPacket)
log.Event().Debugf("receive packet from server %d->%s", majoraPacket.SerialNumber, majoraPacket.Ttype.ToString())
log.Run().Debugf("receive packet from server %d->%s", majoraPacket.SerialNumber, majoraPacket.Ttype.ToString())
switch majoraPacket.Ttype {
case protocol.TypeHeartbeat:
......
......@@ -62,7 +62,7 @@ const (
const (
DefNatServerHost = "majora.virjar.com"
DefNatServerPort = 5879
DefNatAddr = "127.0.0.1:5879"
DefNatAddr = "majora.virjar.com:5879"
PprofAddr = "127.0.0.1:6060"
)
......
......@@ -5,12 +5,10 @@ dns_server = 114.114.114.114:53
;local_ip = 192.168.0.100
;for performance pprof 0 is close
pprof_port = 16666
log_level = 1
log_level = debug
reconn_interval = 5s
net_check_interval = 5s
net_check_url = https://www.baidu.com
[extra]
net_check_url = https://www.baidu.com[extra]
account = superman
[redial]
......
......@@ -13,7 +13,6 @@ import (
var (
runLogger getty.Logger
eventLogger getty.Logger
heartLogger getty.Logger
traceLogger *zap.Logger
errorLogger getty.Logger
)
......@@ -21,13 +20,12 @@ var (
const (
logDir = "./output/log/"
run = "run.log"
event = "event.log"
heart = "heart.log"
trace = "trace.log"
err = "error.log"
error = "error.log"
)
func getLogWriter(path string) zapcore.WriteSyncer {
// debug 模式下会将日志输出到控制台和文件,其他模式只输出到文件
func getLogWriter(path string, level zapcore.Level) zapcore.WriteSyncer {
lumberJackLogger := &lumberjack.Logger{
Filename: path,
MaxSize: 10,
......@@ -35,6 +33,9 @@ func getLogWriter(path string) zapcore.WriteSyncer {
MaxAge: 30,
Compress: false,
}
if level == zapcore.DebugLevel {
return zapcore.NewMultiWriteSyncer(zapcore.AddSync(os.Stdout), zapcore.AddSync(lumberJackLogger))
}
return zapcore.AddSync(lumberJackLogger)
}
......@@ -53,7 +54,7 @@ func getCurPath() string {
return filepath.Dir(exePath)
}
func Init(level int) {
func Init(level string) {
curPath := getCurPath()
base := filepath.Join(curPath, logDir)
if _, err := os.Stat(base); err != nil {
......@@ -70,20 +71,21 @@ func Init(level int) {
panic("invalid current path")
}
runLogger = initSugaredLogger(filepath.Join(base, run))
errorLogger = initSugaredLogger(filepath.Join(base, err))
eventLogger = initSugaredLogger(filepath.Join(base, event))
heartLogger = initSugaredLogger(filepath.Join(base, heart))
traceLogger = initLogger(filepath.Join(base, trace), false)
runLogger = initSugaredLogger(filepath.Join(base, run), level)
errorLogger = initSugaredLogger(filepath.Join(base, error), level)
traceLogger = initLogger(filepath.Join(base, trace), false, level)
// 框架的日志也输入到 run.log 中
getty.SetLogger(runLogger)
}
func initLogger(path string, caller bool) *zap.Logger {
encoder := getEncoder()
writeSyncer := getLogWriter(path)
func initLogger(path string, caller bool, level string) *zap.Logger {
zapLevel := zapcore.InfoLevel
// 忽略错误,如果传入的字符串有误默认 info 级别
_ = zapLevel.Set(level)
core := zapcore.NewCore(encoder, writeSyncer, zapcore.InfoLevel)
encoder := getEncoder()
writeSyncer := getLogWriter(path, zapLevel)
core := zapcore.NewCore(encoder, writeSyncer, zapLevel)
if caller {
return zap.New(core, zap.AddCaller())
} else {
......@@ -91,8 +93,8 @@ func initLogger(path string, caller bool) *zap.Logger {
}
}
func initSugaredLogger(path string) *zap.SugaredLogger {
logger := initLogger(path, true)
func initSugaredLogger(path string, level string) *zap.SugaredLogger {
logger := initLogger(path, true, level)
return logger.Sugar()
}
......@@ -100,14 +102,6 @@ func Run() getty.Logger {
return runLogger
}
func Event() getty.Logger {
return eventLogger
}
func Heart() getty.Logger {
return heartLogger
}
func Trace() *zap.Logger {
return traceLogger
}
......
......@@ -20,7 +20,7 @@ type Extra struct {
}
type Configure struct {
LogLevel int `ini:"log_level" json:"log_level"`
LogLevel string `ini:"log_level" json:"log_level"`
PprofPort int `ini:"pprof_port" json:"pprof_port"`
TunnelAddr string `ini:"tunnel_addr" json:"tunnel_addr"`
DNSServer string `ini:"dns_server" json:"dns_server"`
......@@ -39,7 +39,7 @@ const (
func NewDefMajoraConf() *Configure {
return &Configure{
LogLevel: 1,
LogLevel: "info",
PprofPort: 0,
TunnelAddr: common.DefNatAddr,
DNSServer: common.DNSServer, //nolint:typecheck
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment