2016-11-03 23:16:01 +01:00
|
|
|
// Copyright 2015 The Xorm Authors. All rights reserved.
|
|
|
|
// Use of this source code is governed by a BSD-style
|
|
|
|
// license that can be found in the LICENSE file.
|
|
|
|
|
|
|
|
package xorm
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"io"
|
|
|
|
"log"
|
|
|
|
|
2019-06-23 17:22:43 +02:00
|
|
|
"xorm.io/core"
|
2016-11-03 23:16:01 +01:00
|
|
|
)
|
|
|
|
|
2017-01-23 10:11:18 +01:00
|
|
|
// default log options
|
2016-11-03 23:16:01 +01:00
|
|
|
const (
|
|
|
|
DEFAULT_LOG_PREFIX = "[xorm]"
|
|
|
|
DEFAULT_LOG_FLAG = log.Ldate | log.Lmicroseconds
|
|
|
|
DEFAULT_LOG_LEVEL = core.LOG_DEBUG
|
|
|
|
)
|
|
|
|
|
|
|
|
var _ core.ILogger = DiscardLogger{}
|
|
|
|
|
2017-01-03 09:20:28 +01:00
|
|
|
// DiscardLogger don't log implementation for core.ILogger
|
2016-11-03 23:16:01 +01:00
|
|
|
type DiscardLogger struct{}
|
|
|
|
|
2017-01-03 09:20:28 +01:00
|
|
|
// Debug empty implementation
|
|
|
|
func (DiscardLogger) Debug(v ...interface{}) {}
|
|
|
|
|
|
|
|
// Debugf empty implementation
|
2016-11-03 23:16:01 +01:00
|
|
|
func (DiscardLogger) Debugf(format string, v ...interface{}) {}
|
2017-01-03 09:20:28 +01:00
|
|
|
|
|
|
|
// Error empty implementation
|
|
|
|
func (DiscardLogger) Error(v ...interface{}) {}
|
|
|
|
|
|
|
|
// Errorf empty implementation
|
2016-11-03 23:16:01 +01:00
|
|
|
func (DiscardLogger) Errorf(format string, v ...interface{}) {}
|
2017-01-03 09:20:28 +01:00
|
|
|
|
|
|
|
// Info empty implementation
|
|
|
|
func (DiscardLogger) Info(v ...interface{}) {}
|
|
|
|
|
|
|
|
// Infof empty implementation
|
|
|
|
func (DiscardLogger) Infof(format string, v ...interface{}) {}
|
|
|
|
|
|
|
|
// Warn empty implementation
|
|
|
|
func (DiscardLogger) Warn(v ...interface{}) {}
|
|
|
|
|
|
|
|
// Warnf empty implementation
|
|
|
|
func (DiscardLogger) Warnf(format string, v ...interface{}) {}
|
|
|
|
|
|
|
|
// Level empty implementation
|
2016-11-03 23:16:01 +01:00
|
|
|
func (DiscardLogger) Level() core.LogLevel {
|
|
|
|
return core.LOG_UNKNOWN
|
|
|
|
}
|
2017-01-03 09:20:28 +01:00
|
|
|
|
|
|
|
// SetLevel empty implementation
|
2016-11-03 23:16:01 +01:00
|
|
|
func (DiscardLogger) SetLevel(l core.LogLevel) {}
|
2017-01-03 09:20:28 +01:00
|
|
|
|
|
|
|
// ShowSQL empty implementation
|
|
|
|
func (DiscardLogger) ShowSQL(show ...bool) {}
|
|
|
|
|
|
|
|
// IsShowSQL empty implementation
|
2016-11-03 23:16:01 +01:00
|
|
|
func (DiscardLogger) IsShowSQL() bool {
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
|
|
|
|
// SimpleLogger is the default implment of core.ILogger
|
|
|
|
type SimpleLogger struct {
|
|
|
|
DEBUG *log.Logger
|
|
|
|
ERR *log.Logger
|
|
|
|
INFO *log.Logger
|
|
|
|
WARN *log.Logger
|
|
|
|
level core.LogLevel
|
|
|
|
showSQL bool
|
|
|
|
}
|
|
|
|
|
|
|
|
var _ core.ILogger = &SimpleLogger{}
|
|
|
|
|
|
|
|
// NewSimpleLogger use a special io.Writer as logger output
|
|
|
|
func NewSimpleLogger(out io.Writer) *SimpleLogger {
|
|
|
|
return NewSimpleLogger2(out, DEFAULT_LOG_PREFIX, DEFAULT_LOG_FLAG)
|
|
|
|
}
|
|
|
|
|
|
|
|
// NewSimpleLogger2 let you customrize your logger prefix and flag
|
|
|
|
func NewSimpleLogger2(out io.Writer, prefix string, flag int) *SimpleLogger {
|
|
|
|
return NewSimpleLogger3(out, prefix, flag, DEFAULT_LOG_LEVEL)
|
|
|
|
}
|
|
|
|
|
|
|
|
// NewSimpleLogger3 let you customrize your logger prefix and flag and logLevel
|
|
|
|
func NewSimpleLogger3(out io.Writer, prefix string, flag int, l core.LogLevel) *SimpleLogger {
|
|
|
|
return &SimpleLogger{
|
|
|
|
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),
|
|
|
|
level: l,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Error implement core.ILogger
|
|
|
|
func (s *SimpleLogger) Error(v ...interface{}) {
|
|
|
|
if s.level <= core.LOG_ERR {
|
|
|
|
s.ERR.Output(2, fmt.Sprint(v...))
|
|
|
|
}
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// Errorf implement core.ILogger
|
|
|
|
func (s *SimpleLogger) Errorf(format string, v ...interface{}) {
|
|
|
|
if s.level <= core.LOG_ERR {
|
|
|
|
s.ERR.Output(2, fmt.Sprintf(format, v...))
|
|
|
|
}
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// Debug implement core.ILogger
|
|
|
|
func (s *SimpleLogger) Debug(v ...interface{}) {
|
|
|
|
if s.level <= core.LOG_DEBUG {
|
|
|
|
s.DEBUG.Output(2, fmt.Sprint(v...))
|
|
|
|
}
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// Debugf implement core.ILogger
|
|
|
|
func (s *SimpleLogger) Debugf(format string, v ...interface{}) {
|
|
|
|
if s.level <= core.LOG_DEBUG {
|
|
|
|
s.DEBUG.Output(2, fmt.Sprintf(format, v...))
|
|
|
|
}
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// Info implement core.ILogger
|
|
|
|
func (s *SimpleLogger) Info(v ...interface{}) {
|
|
|
|
if s.level <= core.LOG_INFO {
|
|
|
|
s.INFO.Output(2, fmt.Sprint(v...))
|
|
|
|
}
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// Infof implement core.ILogger
|
|
|
|
func (s *SimpleLogger) Infof(format string, v ...interface{}) {
|
|
|
|
if s.level <= core.LOG_INFO {
|
|
|
|
s.INFO.Output(2, fmt.Sprintf(format, v...))
|
|
|
|
}
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// Warn implement core.ILogger
|
|
|
|
func (s *SimpleLogger) Warn(v ...interface{}) {
|
|
|
|
if s.level <= core.LOG_WARNING {
|
|
|
|
s.WARN.Output(2, fmt.Sprint(v...))
|
|
|
|
}
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// Warnf implement core.ILogger
|
|
|
|
func (s *SimpleLogger) Warnf(format string, v ...interface{}) {
|
|
|
|
if s.level <= core.LOG_WARNING {
|
|
|
|
s.WARN.Output(2, fmt.Sprintf(format, v...))
|
|
|
|
}
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// Level implement core.ILogger
|
|
|
|
func (s *SimpleLogger) Level() core.LogLevel {
|
|
|
|
return s.level
|
|
|
|
}
|
|
|
|
|
|
|
|
// SetLevel implement core.ILogger
|
|
|
|
func (s *SimpleLogger) SetLevel(l core.LogLevel) {
|
|
|
|
s.level = l
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// ShowSQL implement core.ILogger
|
|
|
|
func (s *SimpleLogger) ShowSQL(show ...bool) {
|
|
|
|
if len(show) == 0 {
|
|
|
|
s.showSQL = true
|
|
|
|
return
|
|
|
|
}
|
|
|
|
s.showSQL = show[0]
|
|
|
|
}
|
|
|
|
|
|
|
|
// IsShowSQL implement core.ILogger
|
|
|
|
func (s *SimpleLogger) IsShowSQL() bool {
|
|
|
|
return s.showSQL
|
|
|
|
}
|