Skip to content

Commit 83c49f3

Browse files
authored
Merge pull request #2 from guoapeng/update_logging_lib
replace golang log with zap logging
2 parents 8d9d16d + be3ce9e commit 83c49f3

File tree

12 files changed

+73
-62
lines changed

12 files changed

+73
-62
lines changed

Diff for: .github/workflows/go.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
- name: Set up Go
2020
uses: actions/setup-go@v4
2121
with:
22-
go-version: '1.18'
22+
go-version: '1.19'
2323

2424
- name: Build
2525
run: go build -v ./...

Diff for: README.md

+5-4
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ CHARSET=utf8
5454
import (
5555
"github.com/guoapeng/gdbcTemplate/template"
5656
"github.com/guoapeng/props"
57-
"log"
5857
)
5958

6059
// sql for postgresql
@@ -79,13 +78,12 @@ const SqlUser002 = `select USER_ID,
7978
const SqlUser003 = "insert into USER(USER_NAME, NICKNAME, CREATE_DATE, UPDATE_DATE, USER_TYPE)" +
8079
"values($1, $2, $3, current_date, current_date, 'admin' );"
8180

82-
8381
func main() {
8482

8583
var err error
8684

8785
if AppConfig, err = propsReader.NewFactory("application", "config.properties").New(); err != nil {
88-
log.Fatal("failed to load mandatory properties")
86+
zap.S().Fatal("failed to load mandatory properties")
8987
panic(err)
9088
}
9189

@@ -100,7 +98,7 @@ func main() {
10098

10199
if err != nil {
102100
tx.Rollback()
103-
log.Println("ERROR: failed to create user", err)
101+
zap.S().Error("ERROR: failed to create user", err)
104102
return "", fmt.Errorf("failed to create user")
105103
}
106104

@@ -240,4 +238,7 @@ replace the go build command like
240238

241239
```bash
242240
go build mapper/rowsmapper.go
241+
242+
# or
243+
go build ./...
243244
```

Diff for: datasource/dbManager.go

+7-6
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@ package datasource
33
import (
44
"database/sql"
55
"errors"
6-
"log"
76
"time"
7+
8+
"go.uber.org/zap"
89
)
910

1011
type OpenDb func(driverName, dataSourceName string) (*sql.DB, error)
@@ -37,13 +38,13 @@ func (manager *dbManager) openDb() (*sql.DB, error) {
3738

3839
dsn, maskedDsn := manager.ds.FormatDsn()
3940

40-
log.Printf("connecting to %s\n", maskedDsn)
41+
zap.S().Info("connecting to %s\n", maskedDsn)
4142
db, err := manager.openDbFunc(manager.ds.GetDriverName(), dsn)
4243
if err != nil {
43-
log.Printf("Open database failed,err:%v\n", err)
44+
zap.S().Error("Open database failed,err:%v\n", err)
4445
return nil, err
4546
} else {
46-
log.Printf("connected to the database successfully!\n")
47+
zap.S().Info("connected to the database successfully!\n")
4748
db.SetConnMaxLifetime(100 * time.Second)
4849
db.SetMaxOpenConns(100)
4950
db.SetMaxIdleConns(16)
@@ -53,10 +54,10 @@ func (manager *dbManager) openDb() (*sql.DB, error) {
5354

5455
func (manager *dbManager) Close() error {
5556
if manager.db != nil {
56-
log.Println("Closing db")
57+
zap.S().Info("Closing db")
5758
return manager.db.Close()
5859
} else {
59-
log.Println("db is not opened, need not to close")
60+
zap.S().Error("db is not opened, need not to close")
6061
return nil
6162
}
6263

Diff for: go.mod

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module github.com/guoapeng/gdbcTemplate
22

3-
go 1.18
3+
go 1.19
44

55
require (
66
github.com/DATA-DOG/go-sqlmock v1.3.3
@@ -14,5 +14,7 @@ require (
1414
github.com/golang/mock v1.6.0 // indirect
1515
github.com/pmezard/go-difflib v1.0.0 // indirect
1616
github.com/stretchr/objx v0.5.0 // indirect
17+
go.uber.org/multierr v1.11.0 // indirect
18+
go.uber.org/zap v1.27.0 // indirect
1719
gopkg.in/yaml.v3 v3.0.1 // indirect
1820
)

Diff for: go.sum

+4
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO
2222
github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8=
2323
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
2424
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
25+
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
26+
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
27+
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
28+
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
2529
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
2630
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
2731
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=

Diff for: mapper/beanPropertyRowMapper.go

+13-12
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@ package mapper
22

33
import (
44
"database/sql"
5-
"log"
5+
66
"reflect"
77
"strconv"
88
"strings"
99

1010
interconv "github.com/mufti1/interconv/package"
11+
"go.uber.org/zap"
1112
)
1213

1314
type BeanPropertyRowMapper interface {
@@ -41,35 +42,35 @@ func (mapper *beanPropertyRowMapper) RowMapper(row *sql.Row) interface{} {
4142
for i := 0; i < ss.NumField(); i++ {
4243
val, _ := interconv.ParseString(item[strings.ToUpper(ss.Type().Field(i).Tag.Get("sql"))])
4344
name := ss.Type().Field(i).Name
44-
log.Printf("tag:%s, tag value:%s, filed name:%s", ss.Type().Field(i).Tag.Get("sql"), val, name)
45+
zap.S().Debug("tag:%s, tag value:%s, filed name:%s", ss.Type().Field(i).Tag.Get("sql"), val, name)
4546
switch ss.Field(i).Kind() {
4647
case reflect.String:
4748
ss.FieldByName(name).SetString(val)
4849
case reflect.Int, reflect.Int16, reflect.Int32, reflect.Int64:
4950
i, err := strconv.Atoi(val)
5051
// fmt.Println("i:", i, name)
5152
if err != nil {
52-
log.Printf("can't not atoi:%v", val)
53+
zap.S().Info("can't not atoi:%v", val)
5354
continue
5455
}
5556
ss.FieldByName(name).SetInt(int64(i))
5657
case reflect.Uint16, reflect.Uint32, reflect.Uint64:
5758
i, err := strconv.Atoi(val)
5859
// fmt.Println("i:", i, name)
5960
if err != nil {
60-
log.Printf("can't not atoi:%v", val)
61+
zap.S().Info("can't not atoi:%v", val)
6162
continue
6263
}
6364
ss.FieldByName(name).SetUint(uint64(i))
6465
case reflect.Float32, reflect.Float64:
6566
f, err := strconv.ParseFloat(val, 64)
6667
if err != nil {
67-
log.Printf("can't not ParseFloat:%v", val)
68+
zap.S().Info("can't not ParseFloat:%v", val)
6869
continue
6970
}
7071
ss.FieldByName(name).SetFloat(f)
7172
default:
72-
log.Printf("unknown type:%+v", ss.Field(i).Kind())
73+
zap.S().Info("unknown type:%+v", ss.Field(i).Kind())
7374
}
7475
}
7576
return out
@@ -92,35 +93,35 @@ func (mapper *beanPropertyRowMapper) RowsMapper(rows *sql.Rows) interface{} {
9293
}
9394
for i := 0; i < ss.NumField(); i++ {
9495
val, err := interconv.ParseString(item[strings.ToUpper(ss.Type().Field(i).Tag.Get("sql"))])
95-
log.Println(err)
96+
zap.S().Error(err)
9697
name := ss.Type().Field(i).Name
97-
log.Printf("tag:%s, tag value:%s, field name:%s", ss.Type().Field(i).Tag.Get("sql"), val, name)
98+
zap.S().Debug("tag:%s, tag value:%s, field name:%s", ss.Type().Field(i).Tag.Get("sql"), val, name)
9899
switch ss.Field(i).Kind() {
99100
case reflect.String:
100101
ss.FieldByName(name).SetString(val)
101102
case reflect.Int, reflect.Int16, reflect.Int32, reflect.Int64:
102103
i, err := strconv.Atoi(val)
103104
if err != nil {
104-
log.Printf("can't not atoi:%v", val)
105+
zap.S().Error("can't not atoi:%v", val)
105106
continue
106107
}
107108
ss.FieldByName(name).SetInt(int64(i))
108109
case reflect.Uint16, reflect.Uint32, reflect.Uint64:
109110
i, err := strconv.Atoi(val)
110111
if err != nil {
111-
log.Printf("can't not atoi:%v", val)
112+
zap.S().Error("can't not atoi:%v", val)
112113
continue
113114
}
114115
ss.FieldByName(name).SetUint(uint64(i))
115116
case reflect.Float32, reflect.Float64:
116117
f, err := strconv.ParseFloat(val, 64)
117118
if err != nil {
118-
log.Printf("can't not ParseFloat:%v", val)
119+
zap.S().Error("can't not ParseFloat:%v", val)
119120
continue
120121
}
121122
ss.FieldByName(name).SetFloat(f)
122123
default:
123-
log.Printf("unknown type:%+v", ss.Field(i).Kind())
124+
zap.S().Error("unknown type:%+v", ss.Field(i).Kind())
124125
}
125126
}
126127
return out

Diff for: mapper/rowmapper.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ package mapper
22

33
import (
44
"database/sql"
5-
"log"
65

76
"github.com/guoapeng/gdbcTemplate/datasource"
7+
"go.uber.org/zap"
88
)
99

1010
type RowMapper func(row *sql.Row) interface{}
@@ -38,15 +38,15 @@ func (conv *rowConvertor) MapTo(example interface{}) RowConvertor {
3838

3939
func (conv *rowConvertor) ToObject() interface{} {
4040
if db, err := conv.dbM.GetDb(); err == nil {
41-
log.Println("query using sql: ", conv.sqlstr, " \nwith arguments", conv.args)
41+
zap.S().Debug("query using sql: ", conv.sqlstr, " \nwith arguments", conv.args)
4242
preparedStmt, err := db.Prepare(conv.sqlstr)
4343
if err != nil {
44-
log.Printf("prepare sql statement failed, err:%v \n", err)
44+
zap.S().Error("prepare sql statement failed, err:%v \n", err)
4545
return nil
4646
}
4747
datarow := preparedStmt.QueryRow(conv.args...)
4848
if datarow.Err() != nil {
49-
log.Println("Encountering query error: ", datarow.Err())
49+
zap.S().Error("Encountering query error: ", datarow.Err())
5050
}
5151
if conv.mapper != nil {
5252
return conv.mapper(datarow)

Diff for: mapper/rowsmapper.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ package mapper
22

33
import (
44
"database/sql"
5-
"log"
65
"strings"
76

87
"github.com/guoapeng/gdbcTemplate/datasource"
8+
"go.uber.org/zap"
99
)
1010

1111
type RowsMapper func(rows *sql.Rows) interface{}
@@ -39,15 +39,15 @@ func (rowsCon *rowsConvertor) MapTo(example interface{}) RowsConvertor {
3939

4040
func (rowsCon *rowsConvertor) ToArray() []interface{} {
4141
if db, err := rowsCon.ds.GetDb(); err == nil {
42-
log.Println("query using sql: ", rowsCon.sqlstr, "\nwith arguments ", rowsCon.args)
42+
zap.S().Debug("query using sql: ", rowsCon.sqlstr, "\nwith arguments ", rowsCon.args)
4343
preparedStmt, err := db.Prepare(rowsCon.sqlstr)
4444
if err != nil {
45-
log.Printf("prepare sql statement failed, err:%v \n", err)
45+
zap.S().Error("prepare sql statement failed, err:%v \n", err)
4646
return nil
4747
}
4848
dataRows, err := preparedStmt.Query(rowsCon.args...)
4949
if err != nil {
50-
log.Printf("query failed, err:%v \n", err)
50+
zap.S().Error("query failed, err:%v \n", err)
5151
return nil
5252
}
5353
defer dataRows.Close()

Diff for: mapper/txRowMapper.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ package mapper
22

33
import (
44
"database/sql"
5-
"log"
5+
6+
"go.uber.org/zap"
67
)
78

89
func NewTxRowConvertor(tx *sql.Tx, sqlstr string, args []interface{}) RowConvertor {
@@ -27,15 +28,15 @@ func (conv *txRowConvertor) MapTo(example interface{}) RowConvertor {
2728
}
2829

2930
func (conv *txRowConvertor) ToObject() interface{} {
30-
log.Println("query using sql: ", conv.sqlstr, " \nwith arguments", conv.args)
31+
zap.S().Debug("query using sql: ", conv.sqlstr, " \nwith arguments", conv.args)
3132
preparedStmt, err := conv.tx.Prepare(conv.sqlstr)
3233
if err != nil {
33-
log.Printf("prepare sql statement failed, err:%v \n", err)
34+
zap.S().Error("prepare sql statement failed, err:%v \n", err)
3435
return nil
3536
}
3637
datarow := preparedStmt.QueryRow(conv.args...)
3738
if datarow.Err() != nil {
38-
log.Println("Encountering query error: ", datarow.Err())
39+
zap.S().Error("Encountering query error: ", datarow.Err())
3940
return nil
4041
}
4142
if conv.mapper != nil {

Diff for: mapper/txRowsMapper.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ package mapper
22

33
import (
44
"database/sql"
5-
"log"
5+
6+
"go.uber.org/zap"
67
)
78

89
type TxRowsConvertor interface {
@@ -33,15 +34,15 @@ func (rowsCon *txRowsConvertor) MapTo(example interface{}) RowsConvertor {
3334
}
3435

3536
func (rowsCon *txRowsConvertor) ToArray() []interface{} {
36-
log.Println("query using sql: ", rowsCon.sqlstr, "\nwith arguments ", rowsCon.args)
37+
zap.S().Debug("query using sql: ", rowsCon.sqlstr, "\nwith arguments ", rowsCon.args)
3738
preparedStmt, err := rowsCon.tx.Prepare(rowsCon.sqlstr)
3839
if err != nil {
39-
log.Printf("Prepare statement failed, err:%v \n", err)
40+
zap.S().Error("Prepare statement failed, err:%v \n", err)
4041
return nil
4142
}
4243
dataRows, err := preparedStmt.Query(rowsCon.args...)
4344
if err != nil {
44-
log.Printf("Query failed, err:%v \n", err)
45+
zap.S().Error("Query failed, err:%v \n", err)
4546
return nil
4647
}
4748
defer dataRows.Close()

0 commit comments

Comments
 (0)