github.com/wangyougui/gf/v2@v2.6.5/os/glog/glog.go (about) 1 // Copyright GoFrame Author(https://goframe.org). All Rights Reserved. 2 // 3 // This Source Code Form is subject to the terms of the MIT License. 4 // If a copy of the MIT was not distributed with this file, 5 // You can obtain one at https://github.com/wangyougui/gf. 6 7 // Package glog implements powerful and easy-to-use leveled logging functionality. 8 package glog 9 10 import ( 11 "context" 12 13 "github.com/wangyougui/gf/v2/internal/command" 14 "github.com/wangyougui/gf/v2/os/grpool" 15 "github.com/wangyougui/gf/v2/util/gconv" 16 ) 17 18 // ILogger is the API interface for logger. 19 type ILogger interface { 20 Print(ctx context.Context, v ...interface{}) 21 Printf(ctx context.Context, format string, v ...interface{}) 22 Debug(ctx context.Context, v ...interface{}) 23 Debugf(ctx context.Context, format string, v ...interface{}) 24 Info(ctx context.Context, v ...interface{}) 25 Infof(ctx context.Context, format string, v ...interface{}) 26 Notice(ctx context.Context, v ...interface{}) 27 Noticef(ctx context.Context, format string, v ...interface{}) 28 Warning(ctx context.Context, v ...interface{}) 29 Warningf(ctx context.Context, format string, v ...interface{}) 30 Error(ctx context.Context, v ...interface{}) 31 Errorf(ctx context.Context, format string, v ...interface{}) 32 Critical(ctx context.Context, v ...interface{}) 33 Criticalf(ctx context.Context, format string, v ...interface{}) 34 Panic(ctx context.Context, v ...interface{}) 35 Panicf(ctx context.Context, format string, v ...interface{}) 36 Fatal(ctx context.Context, v ...interface{}) 37 Fatalf(ctx context.Context, format string, v ...interface{}) 38 } 39 40 const ( 41 commandEnvKeyForDebug = "gf.glog.debug" 42 ) 43 44 var ( 45 // Ensure Logger implements ILogger. 46 _ ILogger = &Logger{} 47 48 // Default logger object, for package method usage. 49 defaultLogger = New() 50 51 // Goroutine pool for async logging output. 52 // It uses only one asynchronous worker to ensure log sequence. 53 asyncPool = grpool.New(1) 54 55 // defaultDebug enables debug level or not in default, 56 // which can be configured using command option or system environment. 57 defaultDebug = true 58 ) 59 60 func init() { 61 defaultDebug = gconv.Bool(command.GetOptWithEnv(commandEnvKeyForDebug, "true")) 62 SetDebug(defaultDebug) 63 } 64 65 // DefaultLogger returns the default logger. 66 func DefaultLogger() *Logger { 67 return defaultLogger 68 } 69 70 // SetDefaultLogger sets the default logger for package glog. 71 // Note that there might be concurrent safety issue if calls this function 72 // in different goroutines. 73 func SetDefaultLogger(l *Logger) { 74 defaultLogger = l 75 }