githaven-fork/modules/log/xorm.go
2017-03-15 08:52:01 +08:00

144 lines
3.0 KiB
Go

// Copyright 2017 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package log
import (
"fmt"
"github.com/go-xorm/core"
)
// XORMLogBridge a logger bridge from Logger to xorm
type XORMLogBridge struct {
loggers []*Logger
showSQL bool
level core.LogLevel
}
var (
// XORMLogger the logger for xorm
XORMLogger *XORMLogBridge
)
// DiscardXORMLogger inits a blank logger for xorm
func DiscardXORMLogger() {
XORMLogger = &XORMLogBridge{
showSQL: false,
}
}
// NewXORMLogger generate logger for xorm FIXME: configable
func NewXORMLogger(bufferlen int64, mode, config string) {
logger := newLogger(bufferlen)
logger.SetLogger(mode, config)
if XORMLogger == nil {
XORMLogger = &XORMLogBridge{
showSQL: true,
}
}
XORMLogger.loggers = append(XORMLogger.loggers, logger)
}
func (l *XORMLogBridge) writerMsg(skip, level int, msg string) error {
for _, logger := range l.loggers {
if err := logger.writerMsg(skip, level, msg); err != nil {
return err
}
}
return nil
}
// Debug show debug log
func (l *XORMLogBridge) Debug(v ...interface{}) {
if l.level <= core.LOG_DEBUG {
msg := fmt.Sprint(v...)
l.writerMsg(0, DEBUG, "[D]"+msg)
}
}
// Debugf show debug log
func (l *XORMLogBridge) Debugf(format string, v ...interface{}) {
if l.level <= core.LOG_DEBUG {
for _, logger := range l.loggers {
logger.Debug(format, v...)
}
}
}
// Error show error log
func (l *XORMLogBridge) Error(v ...interface{}) {
if l.level <= core.LOG_ERR {
msg := fmt.Sprint(v...)
l.writerMsg(0, ERROR, "[E]"+msg)
}
}
// Errorf show error log
func (l *XORMLogBridge) Errorf(format string, v ...interface{}) {
if l.level <= core.LOG_ERR {
for _, logger := range l.loggers {
logger.Error(0, format, v...)
}
}
}
// Info show information level log
func (l *XORMLogBridge) Info(v ...interface{}) {
if l.level <= core.LOG_INFO {
msg := fmt.Sprint(v...)
l.writerMsg(0, INFO, "[I]"+msg)
}
}
// Infof show information level log
func (l *XORMLogBridge) Infof(format string, v ...interface{}) {
if l.level <= core.LOG_INFO {
for _, logger := range l.loggers {
logger.Info(format, v...)
}
}
}
// Warn show warning log
func (l *XORMLogBridge) Warn(v ...interface{}) {
if l.level <= core.LOG_WARNING {
msg := fmt.Sprint(v...)
l.writerMsg(0, WARN, "[W] "+msg)
}
}
// Warnf show warnning log
func (l *XORMLogBridge) Warnf(format string, v ...interface{}) {
if l.level <= core.LOG_WARNING {
for _, logger := range l.loggers {
logger.Warn(format, v...)
}
}
}
// Level get logger level
func (l *XORMLogBridge) Level() core.LogLevel {
return l.level
}
// SetLevel set logger level
func (l *XORMLogBridge) SetLevel(level core.LogLevel) {
l.level = level
}
// ShowSQL set if record SQL
func (l *XORMLogBridge) ShowSQL(show ...bool) {
if len(show) > 0 {
l.showSQL = show[0]
} else {
l.showSQL = true
}
}
// IsShowSQL if record SQL
func (l *XORMLogBridge) IsShowSQL() bool {
return l.showSQL
}