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  }