From c097a1919c65b7f439ec23bdbb1bd4a892245fe7 Mon Sep 17 00:00:00 2001 From: Jinzhu Date: Mon, 11 Nov 2013 17:50:27 +0800 Subject: [PATCH] Document Logger --- README.md | 23 +++++++++++++++++++++++ gorm_test.go | 1 + images/logger.png | Bin 0 -> 29125 bytes 3 files changed, 24 insertions(+) create mode 100644 images/logger.png diff --git a/README.md b/README.md index d43f0549..68f782b5 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,7 @@ Yet Another ORM library for Go, aims for developer friendly * Soft Delete * Auto Migration * Transaction +* Logger Support * Every feature comes with tests * Convention Over Configuration * Developer Friendly @@ -636,6 +637,28 @@ tx.Rollback() tx.Commit() ``` +## Logger + +Grom has builtin logger support, enable it with: + +```go +db.LogMode(true) +``` + +![logger](https://github.com/jinzhu/gorm/raw/master/images/logger.png) + +```go +// Use your own logger +// Checkout gorm's default logger for how to format messages: https://github.com/jinzhu/gorm/blob/master/logger.go#files +db.SetLogger(log.New(os.Stdout, "\r\n", 0)) + +// Disable log +db.LogMode(false) + +// Enable log for a single operation, make debug easy +db.Debug().Where("name = ?", "jinzhu").First(&User{}) +``` + ## Run Raw SQl ```go diff --git a/gorm_test.go b/gorm_test.go index 25938301..8379a5b8 100644 --- a/gorm_test.go +++ b/gorm_test.go @@ -86,6 +86,7 @@ func init() { // GRANT ALL ON gorm.* TO 'gorm'@'localhost'; // db, err = Open("mysql", "gorm:gorm@/gorm?charset=utf8&parseTime=True") // db, err = Open("sqlite3", "/tmp/gorm.db") + // db.SetLogger(log.New(os.Stdout, "\r\n", 0)) db.LogMode(true) if err != nil { diff --git a/images/logger.png b/images/logger.png new file mode 100644 index 0000000000000000000000000000000000000000..d31519402ab5f7aa67c3df2f2d5ce1e053c1d62d GIT binary patch literal 29125 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