From 9f1c6a73f0bb0f88be6c4aa9db7b4120114d30d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Mon, 6 Mar 2017 11:51:35 +0100 Subject: [PATCH] tech: added sql logger to log all sql statements sent to sql server --- pkg/services/sqlstore/logger.go | 123 ++++++++++++++++++++++++++++++ pkg/services/sqlstore/sqlstore.go | 3 + 2 files changed, 126 insertions(+) create mode 100644 pkg/services/sqlstore/logger.go diff --git a/pkg/services/sqlstore/logger.go b/pkg/services/sqlstore/logger.go new file mode 100644 index 00000000000..ae1145c21b0 --- /dev/null +++ b/pkg/services/sqlstore/logger.go @@ -0,0 +1,123 @@ +package sqlstore + +import ( + "fmt" + + glog "github.com/grafana/grafana/pkg/log" + + "github.com/go-xorm/core" +) + +type XormLogger struct { + grafanaLog glog.Logger + level glog.Lvl + showSQL bool +} + +func NewXormLogger(level glog.Lvl, grafanaLog glog.Logger) *XormLogger { + return &XormLogger{ + grafanaLog: grafanaLog, + level: level, + showSQL: true, + } +} + +// Error implement core.ILogger +func (s *XormLogger) Err(v ...interface{}) error { + if s.level <= glog.LvlError { + s.grafanaLog.Error(fmt.Sprint(v...)) + } + return nil +} + +// Errorf implement core.ILogger +func (s *XormLogger) Errf(format string, v ...interface{}) error { + if s.level <= glog.LvlError { + s.grafanaLog.Error(fmt.Sprintf(format, v...)) + } + return nil +} + +// Debug implement core.ILogger +func (s *XormLogger) Debug(v ...interface{}) error { + if s.level <= glog.LvlDebug { + s.grafanaLog.Debug(fmt.Sprint(v...)) + } + return nil +} + +// Debugf implement core.ILogger +func (s *XormLogger) Debugf(format string, v ...interface{}) error { + if s.level <= glog.LvlDebug { + s.grafanaLog.Debug(fmt.Sprintf(format, v...)) + } + return nil +} + +// Info implement core.ILogger +func (s *XormLogger) Info(v ...interface{}) error { + if s.level <= glog.LvlInfo { + s.grafanaLog.Info(fmt.Sprint(v...)) + } + return nil +} + +// Infof implement core.ILogger +func (s *XormLogger) Infof(format string, v ...interface{}) error { + if s.level <= glog.LvlInfo { + s.grafanaLog.Info(fmt.Sprintf(format, v...)) + } + return nil +} + +// Warn implement core.ILogger +func (s *XormLogger) Warning(v ...interface{}) error { + if s.level <= glog.LvlWarn { + s.grafanaLog.Warn(fmt.Sprint(v...)) + } + return nil +} + +// Warnf implement core.ILogger +func (s *XormLogger) Warningf(format string, v ...interface{}) error { + if s.level <= glog.LvlWarn { + s.grafanaLog.Warn(fmt.Sprintf(format, v...)) + } + return nil +} + +// Level implement core.ILogger +func (s *XormLogger) Level() core.LogLevel { + switch s.level { + case glog.LvlError: + return core.LOG_ERR + case glog.LvlWarn: + return core.LOG_WARNING + case glog.LvlInfo: + return core.LOG_INFO + case glog.LvlDebug: + return core.LOG_DEBUG + default: + return core.LOG_ERR + } +} + +// SetLevel implement core.ILogger +func (s *XormLogger) SetLevel(l core.LogLevel) error { + return nil +} + +// ShowSQL implement core.ILogger +func (s *XormLogger) ShowSQL(show ...bool) { + s.grafanaLog.Error("ShowSQL", "show", "show") + if len(show) == 0 { + s.showSQL = true + return + } + s.showSQL = show[0] +} + +// IsShowSQL implement core.ILogger +func (s *XormLogger) IsShowSQL() bool { + return s.showSQL +} diff --git a/pkg/services/sqlstore/sqlstore.go b/pkg/services/sqlstore/sqlstore.go index 0d16d57bcde..ef22dd9b6c6 100644 --- a/pkg/services/sqlstore/sqlstore.go +++ b/pkg/services/sqlstore/sqlstore.go @@ -160,6 +160,9 @@ func getEngine() (*xorm.Engine, error) { engine.SetMaxConns(DbCfg.MaxConn) engine.SetMaxOpenConns(DbCfg.MaxOpenConn) engine.SetMaxIdleConns(DbCfg.MaxIdleConn) + // engine.SetLogger(NewXormLogger(log.LvlInfo, log.New("sqlstore.xorm"))) + // engine.ShowSQL = true + // engine.ShowInfo = true } return engine, nil }