gorm

package
v0.7.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 17, 2021 License: MIT Imports: 8 Imported by: 0

README

Logger for gorm

Example

package main

import (
    "github.com/jinzhu/gorm"
    gormlog "github.com/onrik/logrus/gorm"
    "github.com/sirupsen/logrus"
)

func main() {
    db, err := gorm.Open("<driver>", "<dsn>")
    if err != nil {
        logrus.Fatal(err)
    }

    db.SetLogger(gormlog.New(logrus.StandardLogger()))
    db.LogMode(true) // Will log only on logrus debug level
}

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Formatter = func(values ...interface{}) (message interface{}) {
	if len(values) < 1 {
		return
	}

	if values[0] == "sql" {
		formattedValues := []string{}

		for _, value := range values[4].([]interface{}) {
			indirectValue := reflect.Indirect(reflect.ValueOf(value))
			if indirectValue.IsValid() {
				value = indirectValue.Interface()
				if t, ok := value.(time.Time); ok {
					formattedValues = append(formattedValues, fmt.Sprintf("'%v'", t.Format("2006-01-02 15:04:05")))
				} else if b, ok := value.([]byte); ok {
					if str := string(b); isPrintable(str) {
						formattedValues = append(formattedValues, fmt.Sprintf("'%v'", str))
					} else {
						formattedValues = append(formattedValues, "'<binary>'")
					}
				} else if r, ok := value.(driver.Valuer); ok {
					if value, err := r.Value(); err == nil && value != nil {
						formattedValues = append(formattedValues, fmt.Sprintf("'%v'", value))
					} else {
						formattedValues = append(formattedValues, "NULL")
					}
				} else {
					formattedValues = append(formattedValues, fmt.Sprintf("'%v'", value))
				}
			} else {
				formattedValues = append(formattedValues, "NULL")
			}
		}

		sql := ""
		s := values[3].(string)

		if numericPlaceHolderRegexp.MatchString(s) {
			sql = s
			for index, value := range formattedValues {
				placeholder := fmt.Sprintf(`\$%d([^\d]|$)`, index+1)
				sql = regexp.MustCompile(placeholder).ReplaceAllString(sql, value+"$1")
			}
		} else {
			formattedValuesLength := len(formattedValues)
			for index, value := range sqlRegexp.Split(s, -1) {
				sql += value
				if index < formattedValuesLength {
					sql += formattedValues[index]
				}
			}
		}

		message = sql + fmt.Sprintf(" [%s]", values[2])
	} else {
		message = values[2]
	}

	return
}

Functions

This section is empty.

Types

type Logger

type Logger struct {
	// contains filtered or unexported fields
}

func New

func New(l logrus.FieldLogger) *Logger

func (*Logger) Print

func (l *Logger) Print(v ...interface{})

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL