func setupLogging(loggingLevel, logFile string) { level := log.DEBUG switch loggingLevel { case "info": level = log.INFO case "warn": level = log.WARNING case "error": level = log.ERROR } for _, filter := range log.Global { filter.Level = level } if logFile == "stdout" { log.AddFilter("stdout", level, log.NewConsoleLogWriter()) } else { logDir := filepath.Dir(logFile) if err := os.MkdirAll(logDir, 0744); err != nil { panic(err) } writer := log.NewFileLogWriter(logFile, false) log.AddFilter("file", level, writer) writer.SetFormat("[%d %T] [%L] (%S) %M") writer.SetRotate(true) writer.SetRotateSize(0) writer.SetRotateLines(0) writer.SetRotateDaily(true) } // thrift lib use "log", so we also need to customize its behavior _log.SetFlags(_log.Ldate | _log.Ltime | _log.Lshortfile) }
func newPubServer(httpAddr, httpsAddr string, maxClients int, gw *Gateway) *pubServer { this := &pubServer{ webServer: newWebServer("pub_server", httpAddr, httpsAddr, maxClients, Options.HttpReadTimeout, gw), throttlePub: ratelimiter.NewLeakyBuckets(Options.PubQpsLimit, time.Minute), throttleBadAppid: ratelimiter.NewLeakyBuckets(3, time.Minute), } this.pubMetrics = NewPubMetrics(this.gw) this.onConnNewFunc = this.onConnNew this.onConnCloseFunc = this.onConnClose this.webServer.onStop = func() { this.pubMetrics.Flush() } this.auditor = log.NewDefaultLogger(log.TRACE) this.auditor.DeleteFilter("stdout") _ = os.Mkdir("audit", os.ModePerm) rotateEnabled, discardWhenDiskFull := true, false filer := log.NewFileLogWriter("audit/pub_audit.log", rotateEnabled, discardWhenDiskFull, 0644) if filer == nil { panic("failed to open pub audit log") } filer.SetFormat("[%d %T] [%L] (%S) %M") if Options.LogRotateSize > 0 { filer.SetRotateSize(Options.LogRotateSize) } filer.SetRotateLines(0) filer.SetRotateDaily(true) this.auditor.AddFilter("file", logLevel, filer) return this }
func init() { log.DeleteFilter("stdout") rotateEnabled, discardWhenDiskFull := true, true filer := log.NewFileLogWriter("bench.log", rotateEnabled, discardWhenDiskFull, 0644) filer.SetFormat("[%d %T] [%L] (%S) %M") filer.SetRotateLines(0) filer.SetRotateDaily(true) log.AddFilter("file", log.INFO, filer) }
func (this *Start) setupLogging(logFile, logLevel, crashLogFile string) { level := log.DEBUG switch logLevel { case "info": level = log.INFO case "warn": level = log.WARNING case "error": level = log.ERROR case "debug": level = log.DEBUG case "trace": level = log.TRACE case "alarm": level = log.ALARM } for _, filter := range log.Global { filter.Level = level } log.LogBufferLength = 32 // default 32, chan cap if logFile == "stdout" { log.AddFilter("stdout", level, log.NewConsoleLogWriter()) } else { log.DeleteFilter("stdout") filer := log.NewFileLogWriter(logFile, true, true, 0) filer.SetFormat("[%d %T] [%L] (%S) %M") filer.SetRotateSize(0) filer.SetRotateLines(0) filer.SetRotateDaily(true) log.AddFilter("file", level, filer) } if crashLogFile != "" { f, err := os.OpenFile(crashLogFile, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666) if err != nil { panic(err) } syscall.Dup2(int(f.Fd()), int(os.Stdout.Fd())) syscall.Dup2(int(f.Fd()), int(os.Stderr.Fd())) fmt.Fprintf(os.Stderr, "\n%s %s (build: %s)\n===================\n", time.Now().String(), gafka.Version, gafka.BuildId) } }
func (this *Ping) setupLog() { if this.logfile != "stdout" { log.DeleteFilter("stdout") filer := log.NewFileLogWriter(this.logfile, true, false, 0) filer.SetFormat("[%d %T] [%L] (%S) %M") filer.SetRotateSize(0) filer.SetRotateLines(0) filer.SetRotateDaily(true) log.AddFilter("file", log.DEBUG, filer) } }
func (this *controller) setupAuditor() { this.auditor = log.NewDefaultLogger(log.TRACE) this.auditor.DeleteFilter("stdout") _ = os.Mkdir("audit", os.ModePerm) rotateEnabled, discardWhenDiskFull := true, false filer := log.NewFileLogWriter("audit/actord.log", rotateEnabled, discardWhenDiskFull, 0644) if filer == nil { panic("failed to open audit log") } filer.SetFormat("[%d %T] [%L] (%S) %M") filer.SetRotateLines(0) filer.SetRotateDaily(true) this.auditor.AddFilter("file", log.TRACE, filer) }
func newSubServer(httpAddr, httpsAddr string, maxClients int, gw *Gateway) *subServer { this := &subServer{ webServer: newWebServer("sub_server", httpAddr, httpsAddr, maxClients, Options.HttpReadTimeout, gw), closedConnCh: make(chan string, 1<<10), idleConns: make(map[net.Conn]struct{}, 200), wsReadLimit: 8 << 10, wsPongWait: time.Minute, timer: timewheel.NewTimeWheel(time.Second, 120), throttleBadGroup: ratelimiter.NewLeakyBuckets(3, time.Minute), goodGroupClients: make(map[string]struct{}, 100), ackShutdown: 0, ackCh: make(chan ackOffsets, 100), ackedOffsets: make(map[string]map[string]map[string]map[int]int64), } this.subMetrics = NewSubMetrics(this.gw) this.waitExitFunc = this.waitExit this.connStateFunc = this.connStateHandler if this.httpsServer != nil { this.httpsServer.ConnState = this.connStateFunc } if this.httpServer != nil { this.httpServer.ConnState = this.connStateFunc } this.auditor = log.NewDefaultLogger(log.TRACE) this.auditor.DeleteFilter("stdout") _ = os.Mkdir("audit", os.ModePerm) rotateEnabled, discardWhenDiskFull := true, false filer := log.NewFileLogWriter("audit/sub_audit.log", rotateEnabled, discardWhenDiskFull, 0644) if filer == nil { panic("failed to open sub audit log") } filer.SetFormat("[%d %T] [%L] (%S) %M") if Options.LogRotateSize > 0 { filer.SetRotateSize(Options.LogRotateSize) } filer.SetRotateLines(0) filer.SetRotateDaily(true) this.auditor.AddFilter("file", logLevel, filer) return this }
func (this *Monitor) Init() { var logFile, zone string flag.StringVar(&logFile, "log", "stdout", "log filename") flag.StringVar(&zone, "z", "", "zone, required") flag.StringVar(&this.apiAddr, "http", ":10025", "api http server addr") flag.StringVar(&this.influxdbAddr, "influxAddr", "", "influxdb addr, required") flag.StringVar(&this.influxdbDbName, "db", "", "influxdb db name, required") flag.StringVar(&this.externalDir, "confd", "", "external script config dir") flag.Parse() if zone == "" || this.influxdbDbName == "" || this.influxdbAddr == "" { panic("zone or influxdb empty, run help ") } ctx.LoadFromHome() this.zkzone = zk.NewZkZone(zk.DefaultConfig(zone, ctx.ZoneZkAddrs(zone))) this.watchers = make([]Watcher, 0, 10) this.quit = make(chan struct{}) // export RESTful api this.setupRoutes() if logFile == "stdout" { log.AddFilter("stdout", log.TRACE, log.NewConsoleLogWriter()) } else { log.DeleteFilter("stdout") filer := log.NewFileLogWriter(logFile, true, false, 0644) filer.SetRotateDaily(true) filer.SetFormat("[%d %T] [%L] (%S) %M") log.AddFilter("file", log.TRACE, filer) } rc, err := influxdb.NewConfig(this.influxdbAddr, this.influxdbDbName, "", "", time.Minute) if err != nil { panic(err) } telemetry.Default = influxdb.New(metrics.DefaultRegistry, rc) }
func SetupLogging(logFile, level, crashLogFile string) { logLevel = toLogLevel(level) for _, filter := range log.Global { filter.Level = logLevel } log.LogBufferLength = 10 << 10 // default 32, chan cap if logFile != "stdout" { log.DeleteFilter("stdout") rotateEnabled, discardWhenDiskFull := true, false filer := log.NewFileLogWriter(logFile, rotateEnabled, discardWhenDiskFull, 0644) filer.SetFormat("[%d %T] [%L] (%S) %M") if Options.LogRotateSize > 0 { filer.SetRotateSize(Options.LogRotateSize) } filer.SetRotateKeepDuration(time.Hour * 24 * 30) filer.SetRotateLines(0) filer.SetRotateDaily(true) log.AddFilter("file", logLevel, filer) } if crashLogFile != "" { f, err := os.OpenFile(crashLogFile, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666) if err != nil { panic(err) } syscall.Dup2(int(f.Fd()), int(os.Stdout.Fd())) syscall.Dup2(int(f.Fd()), int(os.Stderr.Fd())) fmt.Fprintf(os.Stderr, "\n%s %s (build: %s)\n===================\n", time.Now().String(), gafka.Version, gafka.BuildId) } }
func setupLogging(logFile, level, crashLogFile string) { logLevel := toLogLevel(level) for _, filter := range log.Global { filter.Level = logLevel } log.LogBufferLength = 32 // default 32, chan cap if logFile == "stdout" { log.AddFilter("stdout", logLevel, log.NewConsoleLogWriter()) } else { log.DeleteFilter("stdout") filer := log.NewFileLogWriter(logFile, true, false, 0) filer.SetFormat("[%d %T] [%L] (%S) %M") filer.SetRotateSize(0) filer.SetRotateLines(0) filer.SetRotateDaily(true) log.AddFilter("file", logLevel, filer) } if crashLogFile != "" { f, err := os.OpenFile(crashLogFile, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666) if err != nil { panic(err) } syscall.Dup2(int(f.Fd()), int(os.Stdout.Fd())) syscall.Dup2(int(f.Fd()), int(os.Stderr.Fd())) fmt.Fprintf(os.Stderr, "\n%s %s (build: %s)\n===================\n", time.Now().String(), gafka.Version, gafka.BuildId) } }
func SetupLogging(logFile, logLevel, crashLogFile, alarmSockPath, alarmTag string) { level := log.DEBUG switch logLevel { case "info": level = log.INFO case "warn": level = log.WARNING case "error": level = log.ERROR case "debug": level = log.DEBUG case "trace": level = log.TRACE case "alarm": level = log.ALARM } for _, filter := range log.Global { filter.Level = level } // TODO log.LogBufferLength = 2 << 10 // default 32, chan cap if logFile == "stdout" { log.AddFilter("stdout", level, log.NewConsoleLogWriter()) } else { log.DeleteFilter("stdout") filer := log.NewFileLogWriter(logFile, false) filer.SetFormat("[%d %T] [%L] (%S) %M") filer.SetRotate(true) filer.SetRotateSize(0) filer.SetRotateLines(0) filer.SetRotateDaily(true) log.AddFilter("file", level, filer) if alarmTag != "" && alarmSockPath != "" { if alarmer, err := log.NewSyslogNgWriter(alarmSockPath, alarmTag); err != nil { log.Error("syslogng writer: %s", err.Error()) } else { log.AddFilter("alarm", log.ALARM, alarmer) } } } if crashLogFile != "" { f, err := os.OpenFile(crashLogFile, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666) if err != nil { panic(err) } syscall.Dup2(int(f.Fd()), 2) fmt.Fprintf(os.Stderr, "\n%s %s (build: %s)\n===================\n", time.Now().String(), Version, BuildId) } }