Categorygithub.com/wantedly/gorm-zap
modulepackage
0.0.0-20171015071652-372d3517a876
Repository: https://github.com/wantedly/gorm-zap.git
Documentation: pkg.go.dev

# README

gormzap

Build Status codecov GoDoc license

Alternative logging with zap for GORM ⚡️

In comparison to gorm's default logger, gormzap is faster, reflection free, low allocations and no regex compilations.

Example

package main

import (
	"github.com/jinzhu/gorm"
	"github.com/wantedly/gorm-zap"
)

const (
	databaseURL = "postgres://postgres:@localhost/gormzap?sslmode=disable"
)

func main() {
	logger, err = zap.NewProduction()
	if err != nil {
		panic(err)
	}

	db, err := gorm.Open("postgres", databaseURL)
	if err != nil {
		panic(err)
	}
	db.LogMode(true)
	db.SetLogger(gormzap.New(logger))

	// ...
}

Performance

According to our benchmark, gormzap makes DB operations at least 5% faster and reduce object allocations.

Simple insert query

LoggerTimeObject Allocated
default187940 ns/op494 allocs/op
gormzap185383 ns/op475 allocs/op

Simple select query

LoggerTimeObject Allocated
default169361 ns/op531 allocs/op
gormzap151304 ns/op519 allocs/op

Simple select query with 10 placeholders

LoggerTimeObject Allocated
default200632 ns/op720 allocs/op
gormzap190732 ns/op645 allocs/op

Simple select query with 100 placeholders

LoggerTimeObject Allocated
default444513 ns/op1723 allocs/op
gormzap263098 ns/op1101 allocs/op

# Packages

No description provided by the author

# Functions

New create logger object for *gorm.DB from *zap.Logger.

# Structs

Logger is an alternative implementation of *gorm.Logger.