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 ( ...@@ -24,7 +24,7 @@ import (
var ( var (
configure string configure string
logLevel int logLevel string
pprofPort int pprofPort int
natServer string natServer string
account string account string
...@@ -45,7 +45,7 @@ var ( ...@@ -45,7 +45,7 @@ var (
func init() { func init() {
rand.Seed(time.Now().UnixNano()) rand.Seed(time.Now().UnixNano())
flag.StringVar(&configure, "conf", "", "./majora -c path/to/your/majora.ini") 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.IntVar(&pprofPort, "pprof", 0, "enable pprof")
flag.StringVar(&natServer, "natServer", common.DefNatAddr, "natServer") flag.StringVar(&natServer, "natServer", common.DefNatAddr, "natServer")
flag.StringVar(&account, "account", "unknown", "account") flag.StringVar(&account, "account", "unknown", "account")
...@@ -57,7 +57,7 @@ func init() { ...@@ -57,7 +57,7 @@ func init() {
} }
func initial(cfg *model.Configure) { func initial(cfg *model.Configure) {
log.Init(cfg.LogLevel - 1) log.Init(cfg.LogLevel)
if cfg.PprofPort > 0 { if cfg.PprofPort > 0 {
go func() { go func() {
addr := fmt.Sprintf("127.0.0.1:%d", cfg.PprofPort) 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 { ...@@ -21,31 +21,31 @@ func (m *MajoraEventListener) OnOpen(session getty.Session) error {
extraMap[common.ExtrakeyUser] = m.client.config.Extra.Account extraMap[common.ExtrakeyUser] = m.client.config.Extra.Account
packet.Data = protocol.EncodeExtra(extraMap) packet.Data = protocol.EncodeExtra(extraMap)
if _, _, err := session.WritePkg(packet, time.Second*10); err != nil { 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 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 return nil
} }
func (m *MajoraEventListener) OnClose(session getty.Session) { 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) m.client.CloseAll(session)
} }
func (m *MajoraEventListener) OnError(session getty.Session, err error) { 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) m.client.CloseAll(session)
} }
func (m *MajoraEventListener) OnCron(session getty.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) m.client.Redial(session)
} }
func (m *MajoraEventListener) OnMessage(session getty.Session, input interface{}) { func (m *MajoraEventListener) OnMessage(session getty.Session, input interface{}) {
majoraPacket := input.(*protocol.MajoraPacket) 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 { switch majoraPacket.Ttype {
case protocol.TypeHeartbeat: case protocol.TypeHeartbeat:
......
...@@ -62,7 +62,7 @@ const ( ...@@ -62,7 +62,7 @@ const (
const ( const (
DefNatServerHost = "majora.virjar.com" DefNatServerHost = "majora.virjar.com"
DefNatServerPort = 5879 DefNatServerPort = 5879
DefNatAddr = "127.0.0.1:5879" DefNatAddr = "majora.virjar.com:5879"
PprofAddr = "127.0.0.1:6060" PprofAddr = "127.0.0.1:6060"
) )
......
...@@ -5,12 +5,10 @@ dns_server = 114.114.114.114:53 ...@@ -5,12 +5,10 @@ dns_server = 114.114.114.114:53
;local_ip = 192.168.0.100 ;local_ip = 192.168.0.100
;for performance pprof 0 is close ;for performance pprof 0 is close
pprof_port = 16666 pprof_port = 16666
log_level = 1 log_level = debug
reconn_interval = 5s reconn_interval = 5s
net_check_interval = 5s net_check_interval = 5s
net_check_url = https://www.baidu.com net_check_url = https://www.baidu.com[extra]
[extra]
account = superman account = superman
[redial] [redial]
......
...@@ -13,7 +13,6 @@ import ( ...@@ -13,7 +13,6 @@ import (
var ( var (
runLogger getty.Logger runLogger getty.Logger
eventLogger getty.Logger eventLogger getty.Logger
heartLogger getty.Logger
traceLogger *zap.Logger traceLogger *zap.Logger
errorLogger getty.Logger errorLogger getty.Logger
) )
...@@ -21,13 +20,12 @@ var ( ...@@ -21,13 +20,12 @@ var (
const ( const (
logDir = "./output/log/" logDir = "./output/log/"
run = "run.log" run = "run.log"
event = "event.log"
heart = "heart.log"
trace = "trace.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{ lumberJackLogger := &lumberjack.Logger{
Filename: path, Filename: path,
MaxSize: 10, MaxSize: 10,
...@@ -35,6 +33,9 @@ func getLogWriter(path string) zapcore.WriteSyncer { ...@@ -35,6 +33,9 @@ func getLogWriter(path string) zapcore.WriteSyncer {
MaxAge: 30, MaxAge: 30,
Compress: false, Compress: false,
} }
if level == zapcore.DebugLevel {
return zapcore.NewMultiWriteSyncer(zapcore.AddSync(os.Stdout), zapcore.AddSync(lumberJackLogger))
}
return zapcore.AddSync(lumberJackLogger) return zapcore.AddSync(lumberJackLogger)
} }
...@@ -53,7 +54,7 @@ func getCurPath() string { ...@@ -53,7 +54,7 @@ func getCurPath() string {
return filepath.Dir(exePath) return filepath.Dir(exePath)
} }
func Init(level int) { func Init(level string) {
curPath := getCurPath() curPath := getCurPath()
base := filepath.Join(curPath, logDir) base := filepath.Join(curPath, logDir)
if _, err := os.Stat(base); err != nil { if _, err := os.Stat(base); err != nil {
...@@ -70,20 +71,21 @@ func Init(level int) { ...@@ -70,20 +71,21 @@ func Init(level int) {
panic("invalid current path") panic("invalid current path")
} }
runLogger = initSugaredLogger(filepath.Join(base, run)) runLogger = initSugaredLogger(filepath.Join(base, run), level)
errorLogger = initSugaredLogger(filepath.Join(base, err)) errorLogger = initSugaredLogger(filepath.Join(base, error), level)
eventLogger = initSugaredLogger(filepath.Join(base, event)) traceLogger = initLogger(filepath.Join(base, trace), false, level)
heartLogger = initSugaredLogger(filepath.Join(base, heart))
traceLogger = initLogger(filepath.Join(base, trace), false)
// 框架的日志也输入到 run.log 中 // 框架的日志也输入到 run.log 中
getty.SetLogger(runLogger) getty.SetLogger(runLogger)
} }
func initLogger(path string, caller bool) *zap.Logger { func initLogger(path string, caller bool, level string) *zap.Logger {
encoder := getEncoder() zapLevel := zapcore.InfoLevel
writeSyncer := getLogWriter(path) // 忽略错误,如果传入的字符串有误默认 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 { if caller {
return zap.New(core, zap.AddCaller()) return zap.New(core, zap.AddCaller())
} else { } else {
...@@ -91,8 +93,8 @@ func initLogger(path string, caller bool) *zap.Logger { ...@@ -91,8 +93,8 @@ func initLogger(path string, caller bool) *zap.Logger {
} }
} }
func initSugaredLogger(path string) *zap.SugaredLogger { func initSugaredLogger(path string, level string) *zap.SugaredLogger {
logger := initLogger(path, true) logger := initLogger(path, true, level)
return logger.Sugar() return logger.Sugar()
} }
...@@ -100,14 +102,6 @@ func Run() getty.Logger { ...@@ -100,14 +102,6 @@ func Run() getty.Logger {
return runLogger return runLogger
} }
func Event() getty.Logger {
return eventLogger
}
func Heart() getty.Logger {
return heartLogger
}
func Trace() *zap.Logger { func Trace() *zap.Logger {
return traceLogger return traceLogger
} }
......
...@@ -20,7 +20,7 @@ type Extra struct { ...@@ -20,7 +20,7 @@ type Extra struct {
} }
type Configure 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"` PprofPort int `ini:"pprof_port" json:"pprof_port"`
TunnelAddr string `ini:"tunnel_addr" json:"tunnel_addr"` TunnelAddr string `ini:"tunnel_addr" json:"tunnel_addr"`
DNSServer string `ini:"dns_server" json:"dns_server"` DNSServer string `ini:"dns_server" json:"dns_server"`
...@@ -39,7 +39,7 @@ const ( ...@@ -39,7 +39,7 @@ const (
func NewDefMajoraConf() *Configure { func NewDefMajoraConf() *Configure {
return &Configure{ return &Configure{
LogLevel: 1, LogLevel: "info",
PprofPort: 0, PprofPort: 0,
TunnelAddr: common.DefNatAddr, TunnelAddr: common.DefNatAddr,
DNSServer: common.DNSServer, //nolint:typecheck 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