Logging
Manage logging.
Overview#
By default, logs will be flushed to stdout. User can configure logs to multiple channels.
Install#
$ go get github.com/rookie-ninja/rk-boot/v2
$ go get github.com/rookie-ninja/rk-gin/v2
$ go get github.com/rookie-ninja/rk-db/postgres
Log level#
By default, the log level is warn which prints with error.
Supported log levels are:
- info
- warn
- error
- silent
1.Create boot.yaml#
---
gin:
- name: user-service
port: 8080
enabled: true
postgres:
- name: demo-db
enabled: true
addr: "localhost:5432"
user: postgres # Optional, default: postgres
pass: pass # Optional, default: pass
logger:
level: info # Set log level to info
database:
- name: demo
autoCreate: true
2.Create main.go#
package main
import (
"context"
"github.com/rookie-ninja/rk-boot/v2"
"github.com/rookie-ninja/rk-db/postgres"
"gorm.io/gorm"
"time"
)
func main() {
boot := rkboot.NewBoot()
boot.Bootstrap(context.TODO())
// Auto migrate database and init global userDb variable
pgEntry := rkpostgres.GetPostgresEntry("demo-db")
userDb := pgEntry.GetDB("demo")
if !userDb.DryRun {
userDb.AutoMigrate(&User{})
}
boot.WaitForShutdownSig(context.TODO())
}
// *************************************
// *************** Model ***************
// *************************************
type Base struct {
CreatedAt time.Time `yaml:"-" json:"-"`
UpdatedAt time.Time `yaml:"-" json:"-"`
DeletedAt gorm.DeletedAt `yaml:"-" json:"-" gorm:"index"`
}
type User struct {
Base
Id int `yaml:"id" json:"id" gorm:"primaryKey"`
Name string `yaml:"name" json:"name"`
}
Output
... 2022-09-19T00:42:46.790+0800 INFO postgres@v1.3.6/migrator.go:250 [1.337ms] [rows:-] SELECT DATABASE() 2022-09-19T00:42:46.794+0800 INFO postgres@v1.3.6/migrator.go:253 [3.696ms] [rows:1] SELECT SCHEMA_NAME from Information_schema.SCHEMATA where SCHEMA_NAME LIKE 'demo%' ORDER BY SCHEMA_NAME='demo' DESC,SCHEMA_NAME limit 1 ...
Output paths#
By default, the log output path is stdout.
1.Create boot.yaml#
---
gin:
- name: user-service
port: 8080
enabled: true
postgres:
- name: demo-db
enabled: true
addr: "localhost:5432"
user: postgres
pass: pass
logger:
level: info
outputPaths: [ "log/db.log" ]
2.Validate#
.
├── boot.yaml
├── go.mod
├── go.sum
├── log
│ └── db.log
└── main.go
Full options#
postgres:
- name: demo-db # Required
enabled: true # Required
domain: "*" # Optional
addr: "localhost:5432" # Optional, default: localhost:5432
user: postgres # Optional, default: postgres
pass: pass # Optional, default: pass
protocol: tcp # Optional, default: tcp
logger:
entry: "" # Optional, default: "", logger entry name
level: warn # Optional, default: warn, options: [warn, info, error, silent]
encoding: json # Optional, default: console, options: [json, console]
outputPaths: [ "log/db.log" ] # Optional, default: empty
slowThresholdMs: 5000 # Optional, default: 5000
ignoreRecordNotFoundError: false # Optional, default: false
database:
- name: demo # Required
plugins:
prom:
enabled: false
autoCreate: true # Optional, default: false
dryRun: false # Optional, default: false
preferSimpleProtocol: false # Optional, default: false
params: [] # Optional, default: ["sslmode=disable","TimeZone=Asia/Shanghai"]