ILogger interface changed and some golint issues resolved, #367 resolved

This commit is contained in:
Lunny Xiao 2016-03-31 18:19:00 +08:00
parent 7d2967c786
commit b336fa1880
7 changed files with 223 additions and 220 deletions

View File

@ -71,16 +71,6 @@ Drivers for Go's sql package which currently support database/sql includes:
* select ForUpdate support * select ForUpdate support
* many bugs fixed * many bugs fixed
* **v0.4.3**
* Json column type support
* oracle expirement support
* bug fixed
* **v0.4.2**
* Transaction will auto rollback if not Rollback or Commit be called.
* Gonic Mapper support
* bug fixed
[More changelogs ...](https://github.com/go-xorm/manual-en-US/tree/master/chapter-16) [More changelogs ...](https://github.com/go-xorm/manual-en-US/tree/master/chapter-16)
# Installation # Installation
@ -214,7 +204,7 @@ affected, err := engine.Update(&user, &User{Name:name})
// UPDATE user SET ... Where name = ? // UPDATE user SET ... Where name = ?
var ids = []int64{1, 2, 3} var ids = []int64{1, 2, 3}
affected, err := engine.In(ids).Update(&user) affected, err := engine.In("id", ids).Update(&user)
// UPDATE user SET ... Where id IN (?, ?, ?) // UPDATE user SET ... Where id IN (?, ?, ?)
// force update indicated columns by Cols // force update indicated columns by Cols
@ -234,6 +224,7 @@ affected, err := engine.Id(1).AllCols().Update(&user)
```Go ```Go
affected, err := engine.Where(...).Delete(&user) affected, err := engine.Where(...).Delete(&user)
// DELETE FROM user Where ... // DELETE FROM user Where ...
affected, err := engine.Id(2).Delete(&user)
``` ```
* Count records * Count records

View File

@ -36,17 +36,8 @@ type Engine struct {
mutex *sync.RWMutex mutex *sync.RWMutex
Cacher core.Cacher Cacher core.Cacher
// 是否显示SQL
showSQL bool showSQL bool
showExecTime bool showExecTime bool
//ShowSQL bool
// !nashtsai! TODO ought to deprecate these but having logger to control its log level
/*ShowInfo bool
ShowErr bool*/
//ShowDebug bool
//ShowWarn bool*/
// --227
logger core.ILogger logger core.ILogger
TZLocation *time.Location TZLocation *time.Location
@ -248,7 +239,7 @@ func (engine *Engine) Close() error {
func (engine *Engine) Ping() error { func (engine *Engine) Ping() error {
session := engine.NewSession() session := engine.NewSession()
defer session.Close() defer session.Close()
engine.LogInfo("PING DATABASE", engine.DriverName) engine.logger.Info("PING DATABASE", engine.DriverName)
return session.Ping() return session.Ping()
} }
@ -296,7 +287,7 @@ func (engine *Engine) logSQLExecutionTime(sqlStr string, args []interface{}, exe
} }
// LogError logging error // LogError logging error
func (engine *Engine) LogError(contents ...interface{}) { /*func (engine *Engine) LogError(contents ...interface{}) {
engine.logger.Err(contents...) engine.logger.Err(contents...)
} }
@ -333,7 +324,7 @@ func (engine *Engine) LogWarn(contents ...interface{}) {
// LogWarnf logging warnf // LogWarnf logging warnf
func (engine *Engine) LogWarnf(format string, contents ...interface{}) { func (engine *Engine) LogWarnf(format string, contents ...interface{}) {
engine.logger.Warningf(format, contents...) engine.logger.Warningf(format, contents...)
} }*/
// Sql method let's you manualy write raw sql and operate // Sql method let's you manualy write raw sql and operate
// For example: // For example:
@ -1018,7 +1009,7 @@ func (engine *Engine) mapType(v reflect.Value) *core.Table {
location := k[len("INDEX")+1 : len(k)-1] location := k[len("INDEX")+1 : len(k)-1]
col.TimeZone, err = time.LoadLocation(location) col.TimeZone, err = time.LoadLocation(location)
if err != nil { if err != nil {
engine.LogError(err) engine.logger.Error(err)
} }
case k == "UPDATED": case k == "UPDATED":
col.IsUpdated = true col.IsUpdated = true
@ -1079,16 +1070,16 @@ func (engine *Engine) mapType(v reflect.Value) *core.Table {
if len(fs2) == 2 { if len(fs2) == 2 {
col.Length, err = strconv.Atoi(fs2[0]) col.Length, err = strconv.Atoi(fs2[0])
if err != nil { if err != nil {
engine.LogError(err) engine.logger.Error(err)
} }
col.Length2, err = strconv.Atoi(fs2[1]) col.Length2, err = strconv.Atoi(fs2[1])
if err != nil { if err != nil {
engine.LogError(err) engine.logger.Error(err)
} }
} else if len(fs2) == 1 { } else if len(fs2) == 1 {
col.Length, err = strconv.Atoi(fs2[0]) col.Length, err = strconv.Atoi(fs2[0])
if err != nil { if err != nil {
engine.LogError(err) engine.logger.Error(err)
} }
} }
} }

View File

@ -360,8 +360,8 @@ func setColumnTime(bean interface{}, col *core.Column, t time.Time) {
} }
func genCols(table *core.Table, session *Session, bean interface{}, useCol bool, includeQuote bool) ([]string, []interface{}, error) { func genCols(table *core.Table, session *Session, bean interface{}, useCol bool, includeQuote bool) ([]string, []interface{}, error) {
colNames := make([]string, 0) colNames := make([]string, 0, len(table.ColumnsSeq()))
args := make([]interface{}, 0) args := make([]interface{}, 0, len(table.ColumnsSeq()))
for _, col := range table.Columns() { for _, col := range table.Columns() {
lColName := strings.ToLower(col.Name) lColName := strings.ToLower(col.Name)
@ -376,8 +376,7 @@ func genCols(table *core.Table, session *Session, bean interface{}, useCol bool,
fieldValuePtr, err := col.ValueOf(bean) fieldValuePtr, err := col.ValueOf(bean)
if err != nil { if err != nil {
session.Engine.LogError(err) return nil, nil, err
continue
} }
fieldValue := *fieldValuePtr fieldValue := *fieldValuePtr

View File

@ -18,6 +18,27 @@ const (
DEFAULT_LOG_LEVEL = core.LOG_DEBUG DEFAULT_LOG_LEVEL = core.LOG_DEBUG
) )
var _ core.ILogger = DiscardLogger{}
type DiscardLogger struct{}
func (DiscardLogger) Debug(v ...interface{}) {}
func (DiscardLogger) Debugf(format string, v ...interface{}) {}
func (DiscardLogger) Error(v ...interface{}) {}
func (DiscardLogger) Errorf(format string, v ...interface{}) {}
func (DiscardLogger) Info(v ...interface{}) {}
func (DiscardLogger) Infof(format string, v ...interface{}) {}
func (DiscardLogger) Warn(v ...interface{}) {}
func (DiscardLogger) Warnf(format string, v ...interface{}) {}
func (DiscardLogger) Level() core.LogLevel {
return core.LOG_UNKNOWN
}
func (DiscardLogger) SetLevel(l core.LogLevel) {}
func (DiscardLogger) ShowSQL(show ...bool) {}
func (DiscardLogger) IsShowSQL() bool {
return false
}
// SimpleLogger is the default implment of core.ILogger // SimpleLogger is the default implment of core.ILogger
type SimpleLogger struct { type SimpleLogger struct {
DEBUG *log.Logger DEBUG *log.Logger
@ -52,7 +73,7 @@ func NewSimpleLogger3(out io.Writer, prefix string, flag int, l core.LogLevel) *
} }
// Err implement core.ILogger // Err implement core.ILogger
func (s *SimpleLogger) Err(v ...interface{}) (err error) { func (s *SimpleLogger) Error(v ...interface{}) {
if s.level <= core.LOG_ERR { if s.level <= core.LOG_ERR {
s.ERR.Println(v...) s.ERR.Println(v...)
} }
@ -60,7 +81,7 @@ func (s *SimpleLogger) Err(v ...interface{}) (err error) {
} }
// Errf implement core.ILogger // Errf implement core.ILogger
func (s *SimpleLogger) Errf(format string, v ...interface{}) (err error) { func (s *SimpleLogger) Errorf(format string, v ...interface{}) {
if s.level <= core.LOG_ERR { if s.level <= core.LOG_ERR {
s.ERR.Printf(format, v...) s.ERR.Printf(format, v...)
} }
@ -68,7 +89,7 @@ func (s *SimpleLogger) Errf(format string, v ...interface{}) (err error) {
} }
// Debug implement core.ILogger // Debug implement core.ILogger
func (s *SimpleLogger) Debug(v ...interface{}) (err error) { func (s *SimpleLogger) Debug(v ...interface{}) {
if s.level <= core.LOG_DEBUG { if s.level <= core.LOG_DEBUG {
s.DEBUG.Println(v...) s.DEBUG.Println(v...)
} }
@ -76,7 +97,7 @@ func (s *SimpleLogger) Debug(v ...interface{}) (err error) {
} }
// Debugf implement core.ILogger // Debugf implement core.ILogger
func (s *SimpleLogger) Debugf(format string, v ...interface{}) (err error) { func (s *SimpleLogger) Debugf(format string, v ...interface{}) {
if s.level <= core.LOG_DEBUG { if s.level <= core.LOG_DEBUG {
s.DEBUG.Printf(format, v...) s.DEBUG.Printf(format, v...)
} }
@ -84,7 +105,7 @@ func (s *SimpleLogger) Debugf(format string, v ...interface{}) (err error) {
} }
// Info implement core.ILogger // Info implement core.ILogger
func (s *SimpleLogger) Info(v ...interface{}) (err error) { func (s *SimpleLogger) Info(v ...interface{}) {
if s.level <= core.LOG_INFO { if s.level <= core.LOG_INFO {
s.INFO.Println(v...) s.INFO.Println(v...)
} }
@ -92,7 +113,7 @@ func (s *SimpleLogger) Info(v ...interface{}) (err error) {
} }
// Infof implement core.ILogger // Infof implement core.ILogger
func (s *SimpleLogger) Infof(format string, v ...interface{}) (err error) { func (s *SimpleLogger) Infof(format string, v ...interface{}) {
if s.level <= core.LOG_INFO { if s.level <= core.LOG_INFO {
s.INFO.Printf(format, v...) s.INFO.Printf(format, v...)
} }
@ -100,7 +121,7 @@ func (s *SimpleLogger) Infof(format string, v ...interface{}) (err error) {
} }
// Warning implement core.ILogger // Warning implement core.ILogger
func (s *SimpleLogger) Warning(v ...interface{}) (err error) { func (s *SimpleLogger) Warn(v ...interface{}) {
if s.level <= core.LOG_WARNING { if s.level <= core.LOG_WARNING {
s.WARN.Println(v...) s.WARN.Println(v...)
} }
@ -108,7 +129,7 @@ func (s *SimpleLogger) Warning(v ...interface{}) (err error) {
} }
// Warningf implement core.ILogger // Warningf implement core.ILogger
func (s *SimpleLogger) Warningf(format string, v ...interface{}) (err error) { func (s *SimpleLogger) Warnf(format string, v ...interface{}) {
if s.level <= core.LOG_WARNING { if s.level <= core.LOG_WARNING {
s.WARN.Printf(format, v...) s.WARN.Printf(format, v...)
} }
@ -121,7 +142,7 @@ func (s *SimpleLogger) Level() core.LogLevel {
} }
// SetLevel implement core.ILogger // SetLevel implement core.ILogger
func (s *SimpleLogger) SetLevel(l core.LogLevel) (err error) { func (s *SimpleLogger) SetLevel(l core.LogLevel) {
s.level = l s.level = l
return return
} }

File diff suppressed because it is too large Load Diff

View File

@ -231,7 +231,7 @@ func buildUpdates(engine *Engine, table *core.Table, bean interface{},
fieldValuePtr, err := col.ValueOf(bean) fieldValuePtr, err := col.ValueOf(bean)
if err != nil { if err != nil {
engine.LogError(err) engine.logger.Error(err)
continue continue
} }
@ -266,7 +266,7 @@ func buildUpdates(engine *Engine, table *core.Table, bean interface{},
if structConvert, ok := fieldValue.Addr().Interface().(core.Conversion); ok { if structConvert, ok := fieldValue.Addr().Interface().(core.Conversion); ok {
data, err := structConvert.ToDB() data, err := structConvert.ToDB()
if err != nil { if err != nil {
engine.LogError(err) engine.logger.Error(err)
} else { } else {
val = data val = data
} }
@ -277,7 +277,7 @@ func buildUpdates(engine *Engine, table *core.Table, bean interface{},
if structConvert, ok := fieldValue.Interface().(core.Conversion); ok { if structConvert, ok := fieldValue.Interface().(core.Conversion); ok {
data, err := structConvert.ToDB() data, err := structConvert.ToDB()
if err != nil { if err != nil {
engine.LogError(err) engine.logger.Error(err)
} else { } else {
val = data val = data
} }
@ -389,7 +389,7 @@ func buildUpdates(engine *Engine, table *core.Table, bean interface{},
if col.SQLType.IsText() { if col.SQLType.IsText() {
bytes, err := json.Marshal(fieldValue.Interface()) bytes, err := json.Marshal(fieldValue.Interface())
if err != nil { if err != nil {
engine.LogError(err) engine.logger.Error(err)
continue continue
} }
val = string(bytes) val = string(bytes)
@ -406,7 +406,7 @@ func buildUpdates(engine *Engine, table *core.Table, bean interface{},
} else { } else {
bytes, err = json.Marshal(fieldValue.Interface()) bytes, err = json.Marshal(fieldValue.Interface())
if err != nil { if err != nil {
engine.LogError(err) engine.logger.Error(err)
continue continue
} }
val = bytes val = bytes
@ -483,7 +483,7 @@ func buildConditions(engine *Engine, table *core.Table, bean interface{},
fieldValuePtr, err := col.ValueOf(bean) fieldValuePtr, err := col.ValueOf(bean)
if err != nil { if err != nil {
engine.LogError(err) engine.logger.Error(err)
continue continue
} }
@ -579,7 +579,7 @@ func buildConditions(engine *Engine, table *core.Table, bean interface{},
if col.SQLType.IsText() { if col.SQLType.IsText() {
bytes, err := json.Marshal(fieldValue.Interface()) bytes, err := json.Marshal(fieldValue.Interface())
if err != nil { if err != nil {
engine.LogError(err) engine.logger.Error(err)
continue continue
} }
val = string(bytes) val = string(bytes)
@ -588,7 +588,7 @@ func buildConditions(engine *Engine, table *core.Table, bean interface{},
var err error var err error
bytes, err = json.Marshal(fieldValue.Interface()) bytes, err = json.Marshal(fieldValue.Interface())
if err != nil { if err != nil {
engine.LogError(err) engine.logger.Error(err)
continue continue
} }
val = bytes val = bytes
@ -625,7 +625,7 @@ func buildConditions(engine *Engine, table *core.Table, bean interface{},
if col.SQLType.IsText() { if col.SQLType.IsText() {
bytes, err := json.Marshal(fieldValue.Interface()) bytes, err := json.Marshal(fieldValue.Interface())
if err != nil { if err != nil {
engine.LogError(err) engine.logger.Error(err)
continue continue
} }
val = string(bytes) val = string(bytes)
@ -642,7 +642,7 @@ func buildConditions(engine *Engine, table *core.Table, bean interface{},
} else { } else {
bytes, err = json.Marshal(fieldValue.Interface()) bytes, err = json.Marshal(fieldValue.Interface())
if err != nil { if err != nil {
engine.LogError(err) engine.logger.Error(err)
continue continue
} }
val = bytes val = bytes

View File

@ -25,36 +25,36 @@ func NewSyslogLogger(w *syslog.Writer) *SyslogLogger {
return &SyslogLogger{w: w} return &SyslogLogger{w: w}
} }
func (s *SyslogLogger) Debug(v ...interface{}) (err error) { func (s *SyslogLogger) Debug(v ...interface{}) {
return s.w.Debug(fmt.Sprint(v...)) s.w.Debug(fmt.Sprint(v...))
} }
func (s *SyslogLogger) Debugf(format string, v ...interface{}) (err error) { func (s *SyslogLogger) Debugf(format string, v ...interface{}) {
return s.w.Debug(fmt.Sprintf(format, v...)) s.w.Debug(fmt.Sprintf(format, v...))
} }
func (s *SyslogLogger) Err(v ...interface{}) (err error) { func (s *SyslogLogger) Error(v ...interface{}) {
return s.w.Err(fmt.Sprint(v...)) s.w.Err(fmt.Sprint(v...))
} }
func (s *SyslogLogger) Errf(format string, v ...interface{}) (err error) { func (s *SyslogLogger) Errorf(format string, v ...interface{}) {
return s.w.Err(fmt.Sprintf(format, v...)) s.w.Err(fmt.Sprintf(format, v...))
} }
func (s *SyslogLogger) Info(v ...interface{}) (err error) { func (s *SyslogLogger) Info(v ...interface{}) {
return s.w.Info(fmt.Sprint(v...)) s.w.Info(fmt.Sprint(v...))
} }
func (s *SyslogLogger) Infof(format string, v ...interface{}) (err error) { func (s *SyslogLogger) Infof(format string, v ...interface{}) {
return s.w.Info(fmt.Sprintf(format, v...)) s.w.Info(fmt.Sprintf(format, v...))
} }
func (s *SyslogLogger) Warning(v ...interface{}) (err error) { func (s *SyslogLogger) Warn(v ...interface{}) {
return s.w.Warning(fmt.Sprint(v...)) s.w.Warning(fmt.Sprint(v...))
} }
func (s *SyslogLogger) Warningf(format string, v ...interface{}) (err error) { func (s *SyslogLogger) Warnf(format string, v ...interface{}) {
return s.w.Warning(fmt.Sprintf(format, v...)) s.w.Warning(fmt.Sprintf(format, v...))
} }
func (s *SyslogLogger) Level() core.LogLevel { func (s *SyslogLogger) Level() core.LogLevel {
@ -62,9 +62,7 @@ func (s *SyslogLogger) Level() core.LogLevel {
} }
// SetLevel always return error, as current log/syslog package doesn't allow to set priority level after syslog.Writer created // SetLevel always return error, as current log/syslog package doesn't allow to set priority level after syslog.Writer created
func (s *SyslogLogger) SetLevel(l core.LogLevel) (err error) { func (s *SyslogLogger) SetLevel(l core.LogLevel) {}
return fmt.Errorf("unable to set syslog level")
}
func (s *SyslogLogger) ShowSQL(show ...bool) { func (s *SyslogLogger) ShowSQL(show ...bool) {
if len(show) == 0 { if len(show) == 0 {