github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/libraries/go-xorm/xorm/logger.go (about) 1 // Copyright 2015 The Xorm Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package xorm 6 7 import ( 8 "fmt" 9 "io" 10 "log" 11 12 "github.com/insionng/yougam/libraries/go-xorm/core" 13 ) 14 15 const ( 16 DEFAULT_LOG_PREFIX = "[xorm]" 17 DEFAULT_LOG_FLAG = log.Ldate | log.Lmicroseconds 18 DEFAULT_LOG_LEVEL = core.LOG_DEBUG 19 ) 20 21 var _ core.ILogger = DiscardLogger{} 22 23 type DiscardLogger struct{} 24 25 func (DiscardLogger) Debug(v ...interface{}) {} 26 func (DiscardLogger) Debugf(format string, v ...interface{}) {} 27 func (DiscardLogger) Error(v ...interface{}) {} 28 func (DiscardLogger) Errorf(format string, v ...interface{}) {} 29 func (DiscardLogger) Info(v ...interface{}) {} 30 func (DiscardLogger) Infof(format string, v ...interface{}) {} 31 func (DiscardLogger) Warn(v ...interface{}) {} 32 func (DiscardLogger) Warnf(format string, v ...interface{}) {} 33 func (DiscardLogger) Level() core.LogLevel { 34 return core.LOG_UNKNOWN 35 } 36 func (DiscardLogger) SetLevel(l core.LogLevel) {} 37 func (DiscardLogger) ShowSQL(show ...bool) {} 38 func (DiscardLogger) IsShowSQL() bool { 39 return false 40 } 41 42 // SimpleLogger is the default implment of core.ILogger 43 type SimpleLogger struct { 44 DEBUG *log.Logger 45 ERR *log.Logger 46 INFO *log.Logger 47 WARN *log.Logger 48 level core.LogLevel 49 showSQL bool 50 } 51 52 var _ core.ILogger = &SimpleLogger{} 53 54 // NewSimpleLogger use a special io.Writer as logger output 55 func NewSimpleLogger(out io.Writer) *SimpleLogger { 56 return NewSimpleLogger2(out, DEFAULT_LOG_PREFIX, DEFAULT_LOG_FLAG) 57 } 58 59 // NewSimpleLogger2 let you customrize your logger prefix and flag 60 func NewSimpleLogger2(out io.Writer, prefix string, flag int) *SimpleLogger { 61 return NewSimpleLogger3(out, prefix, flag, DEFAULT_LOG_LEVEL) 62 } 63 64 // NewSimpleLogger3 let you customrize your logger prefix and flag and logLevel 65 func NewSimpleLogger3(out io.Writer, prefix string, flag int, l core.LogLevel) *SimpleLogger { 66 return &SimpleLogger{ 67 DEBUG: log.New(out, fmt.Sprintf("%s [debug] ", prefix), flag), 68 ERR: log.New(out, fmt.Sprintf("%s [error] ", prefix), flag), 69 INFO: log.New(out, fmt.Sprintf("%s [info] ", prefix), flag), 70 WARN: log.New(out, fmt.Sprintf("%s [warn] ", prefix), flag), 71 level: l, 72 } 73 } 74 75 // Error implement core.ILogger 76 func (s *SimpleLogger) Error(v ...interface{}) { 77 if s.level <= core.LOG_ERR { 78 s.ERR.Output(2, fmt.Sprint(v...)) 79 } 80 return 81 } 82 83 // Errorf implement core.ILogger 84 func (s *SimpleLogger) Errorf(format string, v ...interface{}) { 85 if s.level <= core.LOG_ERR { 86 s.ERR.Output(2, fmt.Sprintf(format, v...)) 87 } 88 return 89 } 90 91 // Debug implement core.ILogger 92 func (s *SimpleLogger) Debug(v ...interface{}) { 93 if s.level <= core.LOG_DEBUG { 94 s.DEBUG.Output(2, fmt.Sprint(v...)) 95 } 96 return 97 } 98 99 // Debugf implement core.ILogger 100 func (s *SimpleLogger) Debugf(format string, v ...interface{}) { 101 if s.level <= core.LOG_DEBUG { 102 s.DEBUG.Output(2, fmt.Sprintf(format, v...)) 103 } 104 return 105 } 106 107 // Info implement core.ILogger 108 func (s *SimpleLogger) Info(v ...interface{}) { 109 if s.level <= core.LOG_INFO { 110 s.INFO.Output(2, fmt.Sprint(v...)) 111 } 112 return 113 } 114 115 // Infof implement core.ILogger 116 func (s *SimpleLogger) Infof(format string, v ...interface{}) { 117 if s.level <= core.LOG_INFO { 118 s.INFO.Output(2, fmt.Sprintf(format, v...)) 119 } 120 return 121 } 122 123 // Warn implement core.ILogger 124 func (s *SimpleLogger) Warn(v ...interface{}) { 125 if s.level <= core.LOG_WARNING { 126 s.WARN.Output(2, fmt.Sprint(v...)) 127 } 128 return 129 } 130 131 // Warnf implement core.ILogger 132 func (s *SimpleLogger) Warnf(format string, v ...interface{}) { 133 if s.level <= core.LOG_WARNING { 134 s.WARN.Output(2, fmt.Sprintf(format, v...)) 135 } 136 return 137 } 138 139 // Level implement core.ILogger 140 func (s *SimpleLogger) Level() core.LogLevel { 141 return s.level 142 } 143 144 // SetLevel implement core.ILogger 145 func (s *SimpleLogger) SetLevel(l core.LogLevel) { 146 s.level = l 147 return 148 } 149 150 // ShowSQL implement core.ILogger 151 func (s *SimpleLogger) ShowSQL(show ...bool) { 152 if len(show) == 0 { 153 s.showSQL = true 154 return 155 } 156 s.showSQL = show[0] 157 } 158 159 // IsShowSQL implement core.ILogger 160 func (s *SimpleLogger) IsShowSQL() bool { 161 return s.showSQL 162 }