diff --git a/engine.go b/engine.go index 85eb488f..413c482a 100644 --- a/engine.go +++ b/engine.go @@ -37,7 +37,7 @@ type Engine struct { ShowDebug bool ShowWarn bool - Logger ILogger // io.Writer + Logger core.ILogger TZLocation *time.Location } diff --git a/logger.go b/logger.go index f9d529a1..5ae18906 100644 --- a/logger.go +++ b/logger.go @@ -6,41 +6,51 @@ import ( "log" ) -// logger interface, log/syslog conform with this interface -type ILogger interface { - Debug(m string) (err error) - Err(m string) (err error) - Info(m string) (err error) - Warning(m string) (err error) -} +type LogLevel int + +const ( + LOG_ERR LogLevel = iota + 3 + LOG_WARNING + LOG_INFO = iota + 6 + LOG_DEBUG +) + +const ( + DEFAULT_LOG_PREFIX = "[xorm]" + DEFAULT_LOG_FLAG = log.Ldate | log.Lmicroseconds + DEFAULT_LOG_LEVEL = LOG_INFO +) type SimpleLogger struct { - DEBUG *log.Logger - ERR *log.Logger - INFO *log.Logger - WARN *log.Logger + DEBUG *log.Logger + ERR *log.Logger + INFO *log.Logger + WARN *log.Logger + LogLevel LogLevel } func NewSimpleLogger(out io.Writer) *SimpleLogger { - return &SimpleLogger{ - DEBUG: log.New(out, "[xorm] [debug] ", log.Ldate|log.Lmicroseconds), - ERR: log.New(out, "[xorm] [error] ", log.Ldate|log.Lmicroseconds), - INFO: log.New(out, "[xorm] [info] ", log.Ldate|log.Lmicroseconds), - WARN: log.New(out, "[xorm] [warn] ", log.Ldate|log.Lmicroseconds), - } + return NewSimpleLogger2(out, DEFAULT_LOG_PREFIX, DEFAULT_LOG_FLAG) } func NewSimpleLogger2(out io.Writer, prefix string, flag int) *SimpleLogger { + return NewSimpleLogger3(out, prefix, flag, DEFAULT_LOG_LEVEL) +} + +func NewSimpleLogger3(out io.Writer, prefix string, flag int, logLevel LogLevel) *SimpleLogger { return &SimpleLogger{ - DEBUG: log.New(out, fmt.Sprintf("%s [debug] ", prefix), log.Ldate|log.Lmicroseconds), - ERR: log.New(out, fmt.Sprintf("%s [error] ", prefix), log.Ldate|log.Lmicroseconds), - INFO: log.New(out, fmt.Sprintf("%s [info] ", prefix), log.Ldate|log.Lmicroseconds), - WARN: log.New(out, fmt.Sprintf("%s [warn] ", prefix), log.Ldate|log.Lmicroseconds), + DEBUG: log.New(out, fmt.Sprintf("%s [debug] ", prefix), flag), + ERR: log.New(out, fmt.Sprintf("%s [error] ", prefix), flag), + INFO: log.New(out, fmt.Sprintf("%s [info] ", prefix), flag), + WARN: log.New(out, fmt.Sprintf("%s [warn] ", prefix), flag), + LogLevel: LOG_INFO, } } func (s *SimpleLogger) Debug(m string) (err error) { - s.DEBUG.Println(m) + if s.LogLevel >= LOG_DEBUG { + s.DEBUG.Println(m) + } return } @@ -50,11 +60,15 @@ func (s *SimpleLogger) Err(m string) (err error) { } func (s *SimpleLogger) Info(m string) (err error) { - s.INFO.Println(m) + if s.LogLevel >= LOG_INFO { + s.INFO.Println(m) + } return } func (s *SimpleLogger) Warning(m string) (err error) { - s.WARN.Println(m) + if s.LogLevel >= LOG_WARNING { + s.WARN.Println(m) + } return }