// 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 }