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
* 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)
# Installation
@ -214,7 +204,7 @@ affected, err := engine.Update(&user, &User{Name:name})
// UPDATE user SET ... Where name = ?
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 (?, ?, ?)
// force update indicated columns by Cols
@ -234,6 +224,7 @@ affected, err := engine.Id(1).AllCols().Update(&user)
```Go
affected, err := engine.Where(...).Delete(&user)
// DELETE FROM user Where ...
affected, err := engine.Id(2).Delete(&user)
```
* Count records

View File

@ -36,17 +36,8 @@ type Engine struct {
mutex *sync.RWMutex
Cacher core.Cacher
// 是否显示SQL
showSQL 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
TZLocation *time.Location
@ -248,7 +239,7 @@ func (engine *Engine) Close() error {
func (engine *Engine) Ping() error {
session := engine.NewSession()
defer session.Close()
engine.LogInfo("PING DATABASE", engine.DriverName)
engine.logger.Info("PING DATABASE", engine.DriverName)
return session.Ping()
}
@ -296,7 +287,7 @@ func (engine *Engine) logSQLExecutionTime(sqlStr string, args []interface{}, exe
}
// LogError logging error
func (engine *Engine) LogError(contents ...interface{}) {
/*func (engine *Engine) LogError(contents ...interface{}) {
engine.logger.Err(contents...)
}
@ -333,7 +324,7 @@ func (engine *Engine) LogWarn(contents ...interface{}) {
// LogWarnf logging warnf
func (engine *Engine) LogWarnf(format string, contents ...interface{}) {
engine.logger.Warningf(format, contents...)
}
}*/
// Sql method let's you manualy write raw sql and operate
// For example:
@ -1018,7 +1009,7 @@ func (engine *Engine) mapType(v reflect.Value) *core.Table {
location := k[len("INDEX")+1 : len(k)-1]
col.TimeZone, err = time.LoadLocation(location)
if err != nil {
engine.LogError(err)
engine.logger.Error(err)
}
case k == "UPDATED":
col.IsUpdated = true
@ -1079,16 +1070,16 @@ func (engine *Engine) mapType(v reflect.Value) *core.Table {
if len(fs2) == 2 {
col.Length, err = strconv.Atoi(fs2[0])
if err != nil {
engine.LogError(err)
engine.logger.Error(err)
}
col.Length2, err = strconv.Atoi(fs2[1])
if err != nil {
engine.LogError(err)
engine.logger.Error(err)
}
} else if len(fs2) == 1 {
col.Length, err = strconv.Atoi(fs2[0])
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) {
colNames := make([]string, 0)
args := make([]interface{}, 0)
colNames := make([]string, 0, len(table.ColumnsSeq()))
args := make([]interface{}, 0, len(table.ColumnsSeq()))
for _, col := range table.Columns() {
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)
if err != nil {
session.Engine.LogError(err)
continue
return nil, nil, err
}
fieldValue := *fieldValuePtr

View File

@ -18,6 +18,27 @@ const (
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
type SimpleLogger struct {
DEBUG *log.Logger
@ -52,7 +73,7 @@ func NewSimpleLogger3(out io.Writer, prefix string, flag int, l core.LogLevel) *
}
// Err implement core.ILogger
func (s *SimpleLogger) Err(v ...interface{}) (err error) {
func (s *SimpleLogger) Error(v ...interface{}) {
if s.level <= core.LOG_ERR {
s.ERR.Println(v...)
}
@ -60,7 +81,7 @@ func (s *SimpleLogger) Err(v ...interface{}) (err error) {
}
// 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 {
s.ERR.Printf(format, v...)
}
@ -68,7 +89,7 @@ func (s *SimpleLogger) Errf(format string, v ...interface{}) (err error) {
}
// Debug implement core.ILogger
func (s *SimpleLogger) Debug(v ...interface{}) (err error) {
func (s *SimpleLogger) Debug(v ...interface{}) {
if s.level <= core.LOG_DEBUG {
s.DEBUG.Println(v...)
}
@ -76,7 +97,7 @@ func (s *SimpleLogger) Debug(v ...interface{}) (err error) {
}
// 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 {
s.DEBUG.Printf(format, v...)
}
@ -84,7 +105,7 @@ func (s *SimpleLogger) Debugf(format string, v ...interface{}) (err error) {
}
// Info implement core.ILogger
func (s *SimpleLogger) Info(v ...interface{}) (err error) {
func (s *SimpleLogger) Info(v ...interface{}) {
if s.level <= core.LOG_INFO {
s.INFO.Println(v...)
}
@ -92,7 +113,7 @@ func (s *SimpleLogger) Info(v ...interface{}) (err error) {
}
// 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 {
s.INFO.Printf(format, v...)
}
@ -100,7 +121,7 @@ func (s *SimpleLogger) Infof(format string, v ...interface{}) (err error) {
}
// Warning implement core.ILogger
func (s *SimpleLogger) Warning(v ...interface{}) (err error) {
func (s *SimpleLogger) Warn(v ...interface{}) {
if s.level <= core.LOG_WARNING {
s.WARN.Println(v...)
}
@ -108,7 +129,7 @@ func (s *SimpleLogger) Warning(v ...interface{}) (err error) {
}
// 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 {
s.WARN.Printf(format, v...)
}
@ -121,7 +142,7 @@ func (s *SimpleLogger) Level() core.LogLevel {
}
// SetLevel implement core.ILogger
func (s *SimpleLogger) SetLevel(l core.LogLevel) (err error) {
func (s *SimpleLogger) SetLevel(l core.LogLevel) {
s.level = l
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)
if err != nil {
engine.LogError(err)
engine.logger.Error(err)
continue
}
@ -266,7 +266,7 @@ func buildUpdates(engine *Engine, table *core.Table, bean interface{},
if structConvert, ok := fieldValue.Addr().Interface().(core.Conversion); ok {
data, err := structConvert.ToDB()
if err != nil {
engine.LogError(err)
engine.logger.Error(err)
} else {
val = data
}
@ -277,7 +277,7 @@ func buildUpdates(engine *Engine, table *core.Table, bean interface{},
if structConvert, ok := fieldValue.Interface().(core.Conversion); ok {
data, err := structConvert.ToDB()
if err != nil {
engine.LogError(err)
engine.logger.Error(err)
} else {
val = data
}
@ -389,7 +389,7 @@ func buildUpdates(engine *Engine, table *core.Table, bean interface{},
if col.SQLType.IsText() {
bytes, err := json.Marshal(fieldValue.Interface())
if err != nil {
engine.LogError(err)
engine.logger.Error(err)
continue
}
val = string(bytes)
@ -406,7 +406,7 @@ func buildUpdates(engine *Engine, table *core.Table, bean interface{},
} else {
bytes, err = json.Marshal(fieldValue.Interface())
if err != nil {
engine.LogError(err)
engine.logger.Error(err)
continue
}
val = bytes
@ -483,7 +483,7 @@ func buildConditions(engine *Engine, table *core.Table, bean interface{},
fieldValuePtr, err := col.ValueOf(bean)
if err != nil {
engine.LogError(err)
engine.logger.Error(err)
continue
}
@ -579,7 +579,7 @@ func buildConditions(engine *Engine, table *core.Table, bean interface{},
if col.SQLType.IsText() {
bytes, err := json.Marshal(fieldValue.Interface())
if err != nil {
engine.LogError(err)
engine.logger.Error(err)
continue
}
val = string(bytes)
@ -588,7 +588,7 @@ func buildConditions(engine *Engine, table *core.Table, bean interface{},
var err error
bytes, err = json.Marshal(fieldValue.Interface())
if err != nil {
engine.LogError(err)
engine.logger.Error(err)
continue
}
val = bytes
@ -625,7 +625,7 @@ func buildConditions(engine *Engine, table *core.Table, bean interface{},
if col.SQLType.IsText() {
bytes, err := json.Marshal(fieldValue.Interface())
if err != nil {
engine.LogError(err)
engine.logger.Error(err)
continue
}
val = string(bytes)
@ -642,7 +642,7 @@ func buildConditions(engine *Engine, table *core.Table, bean interface{},
} else {
bytes, err = json.Marshal(fieldValue.Interface())
if err != nil {
engine.LogError(err)
engine.logger.Error(err)
continue
}
val = bytes

View File

@ -25,36 +25,36 @@ func NewSyslogLogger(w *syslog.Writer) *SyslogLogger {
return &SyslogLogger{w: w}
}
func (s *SyslogLogger) Debug(v ...interface{}) (err error) {
return s.w.Debug(fmt.Sprint(v...))
func (s *SyslogLogger) Debug(v ...interface{}) {
s.w.Debug(fmt.Sprint(v...))
}
func (s *SyslogLogger) Debugf(format string, v ...interface{}) (err error) {
return s.w.Debug(fmt.Sprintf(format, v...))
func (s *SyslogLogger) Debugf(format string, v ...interface{}) {
s.w.Debug(fmt.Sprintf(format, v...))
}
func (s *SyslogLogger) Err(v ...interface{}) (err error) {
return s.w.Err(fmt.Sprint(v...))
func (s *SyslogLogger) Error(v ...interface{}) {
s.w.Err(fmt.Sprint(v...))
}
func (s *SyslogLogger) Errf(format string, v ...interface{}) (err error) {
return s.w.Err(fmt.Sprintf(format, v...))
func (s *SyslogLogger) Errorf(format string, v ...interface{}) {
s.w.Err(fmt.Sprintf(format, v...))
}
func (s *SyslogLogger) Info(v ...interface{}) (err error) {
return s.w.Info(fmt.Sprint(v...))
func (s *SyslogLogger) Info(v ...interface{}) {
s.w.Info(fmt.Sprint(v...))
}
func (s *SyslogLogger) Infof(format string, v ...interface{}) (err error) {
return s.w.Info(fmt.Sprintf(format, v...))
func (s *SyslogLogger) Infof(format string, v ...interface{}) {
s.w.Info(fmt.Sprintf(format, v...))
}
func (s *SyslogLogger) Warning(v ...interface{}) (err error) {
return s.w.Warning(fmt.Sprint(v...))
func (s *SyslogLogger) Warn(v ...interface{}) {
s.w.Warning(fmt.Sprint(v...))
}
func (s *SyslogLogger) Warningf(format string, v ...interface{}) (err error) {
return s.w.Warning(fmt.Sprintf(format, v...))
func (s *SyslogLogger) Warnf(format string, v ...interface{}) {
s.w.Warning(fmt.Sprintf(format, v...))
}
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
func (s *SyslogLogger) SetLevel(l core.LogLevel) (err error) {
return fmt.Errorf("unable to set syslog level")
}
func (s *SyslogLogger) SetLevel(l core.LogLevel) {}
func (s *SyslogLogger) ShowSQL(show ...bool) {
if len(show) == 0 {