Use wrapped logger type rather than system raw logger lib.
This commit is contained in:
		| @ -40,8 +40,8 @@ func NewHandler() *GODNSHandler { | |||||||
| 	resolvConfig := settings.ResolvConfig | 	resolvConfig := settings.ResolvConfig | ||||||
| 	clientConfig, err := dns.ClientConfigFromFile(resolvConfig.ResolvFile) | 	clientConfig, err := dns.ClientConfigFromFile(resolvConfig.ResolvFile) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		logger.Printf(":%s is not a valid resolv.conf file\n", resolvConfig.ResolvFile) | 		logger.Warn(":%s is not a valid resolv.conf file\n", resolvConfig.ResolvFile) | ||||||
| 		logger.Println(err) | 		logger.Error(err.Error()) | ||||||
| 		panic(err) | 		panic(err) | ||||||
| 	} | 	} | ||||||
| 	clientConfig.Timeout = resolvConfig.Timeout | 	clientConfig.Timeout = resolvConfig.Timeout | ||||||
| @ -69,7 +69,7 @@ func NewHandler() *GODNSHandler { | |||||||
| 		// } | 		// } | ||||||
| 		panic("Redis cache backend not implement yet") | 		panic("Redis cache backend not implement yet") | ||||||
| 	default: | 	default: | ||||||
| 		logger.Printf("Invalid cache backend %s", cacheConfig.Backend) | 		logger.Error("Invalid cache backend %s", cacheConfig.Backend) | ||||||
| 		panic("Invalid cache backend") | 		panic("Invalid cache backend") | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | |||||||
							
								
								
									
										34
									
								
								main.go
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								main.go
									
									
									
									
									
								
							| @ -1,7 +1,6 @@ | |||||||
| package main | package main | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"log" |  | ||||||
| 	"os" | 	"os" | ||||||
| 	"os/signal" | 	"os/signal" | ||||||
| 	"runtime" | 	"runtime" | ||||||
| @ -9,12 +8,12 @@ import ( | |||||||
| ) | ) | ||||||
|  |  | ||||||
| var ( | var ( | ||||||
| 	logger *log.Logger | 	logger *GoDNSLogger | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func main() { | func main() { | ||||||
|  |  | ||||||
| 	logger = initLogger(settings.Log.File) | 	initLogger() | ||||||
|  |  | ||||||
| 	server := &Server{ | 	server := &Server{ | ||||||
| 		host:     settings.Server.Host, | 		host:     settings.Server.Host, | ||||||
| @ -25,7 +24,7 @@ func main() { | |||||||
|  |  | ||||||
| 	server.Run() | 	server.Run() | ||||||
|  |  | ||||||
| 	logger.Printf("godns %s start", settings.Version) | 	logger.Info("godns %s start", settings.Version) | ||||||
|  |  | ||||||
| 	sig := make(chan os.Signal) | 	sig := make(chan os.Signal) | ||||||
| 	signal.Notify(sig, os.Interrupt) | 	signal.Notify(sig, os.Interrupt) | ||||||
| @ -34,7 +33,7 @@ forever: | |||||||
| 	for { | 	for { | ||||||
| 		select { | 		select { | ||||||
| 		case <-sig: | 		case <-sig: | ||||||
| 			logger.Printf("signal received, stopping") | 			logger.Info("signal received, stopping") | ||||||
| 			break forever | 			break forever | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| @ -43,22 +42,23 @@ forever: | |||||||
|  |  | ||||||
| func Debug(format string, v ...interface{}) { | func Debug(format string, v ...interface{}) { | ||||||
| 	if settings.Debug { | 	if settings.Debug { | ||||||
| 		logger.Printf(format, v...) | 		logger.Debug(format, v...) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| func initLogger(log_file string) (logger *log.Logger) { | func initLogger() { | ||||||
| 	if log_file != "" { | 	logger = NewLogger() | ||||||
| 		f, err := os.Create(log_file) |  | ||||||
| 		if err != nil { |  | ||||||
| 			os.Exit(1) |  | ||||||
| 		} |  | ||||||
| 		logger = log.New(f, "[godns]", log.Ldate|log.Ltime) |  | ||||||
| 	} else { |  | ||||||
| 		logger = log.New(os.Stdout, "[godns]", log.Ldate|log.Ltime) |  | ||||||
| 	} |  | ||||||
| 	return logger |  | ||||||
|  |  | ||||||
|  | 	if settings.Log.Stdout { | ||||||
|  | 		logger.SetLogger("console", nil) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if settings.Log.File != "" { | ||||||
|  | 		config := map[string]interface{}{"file": settings.Log.File} | ||||||
|  | 		logger.SetLogger("file", config) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	logger.SetLevel(settings.Log.LogLevel()) | ||||||
| } | } | ||||||
|  |  | ||||||
| func init() { | func init() { | ||||||
|  | |||||||
| @ -48,10 +48,10 @@ func (s *Server) Run() { | |||||||
|  |  | ||||||
| func (s *Server) start(ds *dns.Server) { | func (s *Server) start(ds *dns.Server) { | ||||||
|  |  | ||||||
| 	logger.Printf("Start %s listener on %s\n", ds.Net, s.Addr()) | 	logger.Info("Start %s listener on %s\n", ds.Net, s.Addr()) | ||||||
| 	err := ds.ListenAndServe() | 	err := ds.ListenAndServe() | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		logger.Fatalf("Start %s listener on %s failed:%s", ds.Net, s.Addr(), err.Error()) | 		logger.Error("Start %s listener on %s failed:%s", ds.Net, s.Addr(), err.Error()) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										20
									
								
								settings.go
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								settings.go
									
									
									
									
									
								
							| @ -13,6 +13,14 @@ var ( | |||||||
| 	settings Settings | 	settings Settings | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  | var LogLevelMap = map[string]int{ | ||||||
|  | 	"DEBUG":  LevelDebug, | ||||||
|  | 	"INFO":   LevelInfo, | ||||||
|  | 	"NOTICE": LevelNotice, | ||||||
|  | 	"WARN":   LevelWarn, | ||||||
|  | 	"ERROR":  LevelError, | ||||||
|  | } | ||||||
|  |  | ||||||
| type Settings struct { | type Settings struct { | ||||||
| 	Version      string | 	Version      string | ||||||
| 	Debug        bool | 	Debug        bool | ||||||
| @ -47,7 +55,17 @@ func (s RedisSettings) Addr() string { | |||||||
| } | } | ||||||
|  |  | ||||||
| type LogSettings struct { | type LogSettings struct { | ||||||
| 	File string | 	Stdout bool | ||||||
|  | 	File   string | ||||||
|  | 	Level  string | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (ls LogSettings) LogLevel() int { | ||||||
|  | 	l, ok := LogLevelMap[ls.Level] | ||||||
|  | 	if !ok { | ||||||
|  | 		panic("Config error: invalid log level: " + ls.Level) | ||||||
|  | 	} | ||||||
|  | 	return l | ||||||
| } | } | ||||||
|  |  | ||||||
| type CacheSettings struct { | type CacheSettings struct { | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user