<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ~~~ package main import ( "demo/library/dao/config" ) func main() { cli := InitLog2(&config.LogCfg{ LogName: "Demo", TypeName: "Server_1", Debug: false, }) go cli.WriteMessage() cli.WriteChannel("aaaaa", "bbbbb", "cccccc", "dddddd") } ~~~ ~~~ package main import ( "demo/library/dao/common" "demo/library/dao/config" "fmt" "go.uber.org/zap" "go.uber.org/zap/zapcore" "gopkg.in/natefinch/lumberjack.v2" "os" "path/filepath" "runtime" "strings" ) type LogMgr2 struct { LogName string TypeName string writeChan chan []interface{} } func InitLog2(cfg *config.LogCfg) *LogMgr2 { if cfg.LogName == "" || cfg.TypeName == "" { common.SimplePanic("ProgramName or TypeName Is Empty") } SetLogger(cfg.LogName+cfg.TypeName, NewLogger(cfg.LogName+cfg.TypeName+".log")) return &LogMgr2{ LogName: cfg.LogName, TypeName: cfg.TypeName, writeChan: make(chan []interface{}, 2048), } } func (mgr *LogMgr2) WriteChannel(keysAndValues ...interface{}) { mgr.writeChan <- keysAndValues } func (mgr *LogMgr2) WriteMessage() { for msg := range mgr.writeChan { _, file, line, _ := runtime.Caller(1) msg = append(msg, file) msg = append(msg, line) GetLogger(mgr.LogName+mgr.TypeName). Infow(mgr.TypeName, msg[:]...) } } //----------------------------------------------------------------------------------------- var maploggers map[string]*zap.SugaredLogger func init() { maploggers = make(map[string]*zap.SugaredLogger) } func GetWorkDir() string { dir, err := filepath.Abs(filepath.Dir(os.Args[0])) if err != nil { fmt.Println(err.Error()) } return strings.Replace(dir, "\\", "/", -1) } func GetLogger(logName string) *zap.SugaredLogger { if v, ok := maploggers[logName]; ok { return v } return nil } func SetLogger(logName string, logger *zap.SugaredLogger) { maploggers[logName] = logger } func NewLogger(fileName string) *zap.SugaredLogger { tmp := GetLogger(fileName) if tmp != nil { return tmp } fileName = GetWorkDir() + "/logs/" + fileName fmt.Println("log path:", fileName) if tmp != nil { return tmp } w := zapcore.AddSync(&lumberjack.Logger{ Filename: fileName, MaxSize: 20, // megabytes MaxBackups: 20, //最多保留20個備份 MaxAge: 7, // days Compress: true, //是否壓縮備份文件 }) newProductionEncoderConfig := zap.NewProductionEncoderConfig() newProductionEncoderConfig.TimeKey = "T" newProductionEncoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder newProductionEncoderConfig.CallerKey = "T" core := zapcore.NewTee( //打印級別 zapcore.NewCore(zapcore.NewJSONEncoder(newProductionEncoderConfig), w, zapcore.InfoLevel), ) logger := zap.New(core, zap.AddCaller()) return logger.Sugar() } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看