Skip to content

Commit 6727482

Browse files
committed
canal,dump: Improve logging
1 parent 95109e7 commit 6727482

File tree

3 files changed

+34
-1
lines changed

3 files changed

+34
-1
lines changed

README.md

+24
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ This repo uses [Changelog](CHANGELOG.md).
2424
* [Client](#client)
2525
* [Fake server](#server)
2626
* [database/sql like driver](#driver)
27+
* [Logging](#logging)
2728

2829
## Replication
2930

@@ -492,6 +493,29 @@ func main() {
492493

493494
We pass all tests in https://github.com/bradfitz/go-sql-test using go-mysql driver. :-)
494495

496+
## Logging
497+
498+
Logging by default is send to stdout.
499+
500+
To disable logging completely:
501+
```go
502+
import "github.com/siddontang/go-log/log"
503+
...
504+
nullHandler, _ := log.NewNullHandler()
505+
cfg.Logger = log.NewDefault(nullHandler)
506+
```
507+
508+
To write logging to any [`io.Writer`](https://pkg.go.dev/io#Writer):
509+
```go
510+
import "github.com/siddontang/go-log/log"
511+
...
512+
w := ...
513+
streamHandler, _ := log.NewStreamHandler(w)
514+
cfg.Logger = log.NewDefault(streamHandler)
515+
```
516+
517+
Or you can implement your own [`log.Handler`](https://pkg.go.dev/github.com/siddontang/go-log/log#Handler).
518+
495519
## Donate
496520

497521
If you like the project and want to buy me a cola, you can through:

canal/canal.go

+3
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,9 @@ func (c *Canal) prepareDumper() error {
153153
return nil
154154
}
155155

156+
// use the same logger for the dumper
157+
c.dumper.Logger = c.cfg.Logger
158+
156159
dbs := c.cfg.Dump.Databases
157160
tables := c.cfg.Dump.Tables
158161
tableDB := c.cfg.Dump.TableDB

dump/dumper.go

+7-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
. "github.com/go-mysql-org/go-mysql/mysql"
1414
"github.com/pingcap/errors"
1515
"github.com/siddontang/go-log/log"
16+
"github.com/siddontang/go-log/loggers"
1617
)
1718

1819
// Unlick mysqldump, Dumper is designed for parsing and syning data easily.
@@ -49,6 +50,8 @@ type Dumper struct {
4950

5051
mysqldumpVersion string
5152
sourceDataSupported bool
53+
54+
Logger loggers.Advanced
5255
}
5356

5457
func NewDumper(executionPath string, addr string, user string, password string) (*Dumper, error) {
@@ -93,6 +96,9 @@ func NewDumper(executionPath string, addr string, user string, password string)
9396

9497
d.ErrOut = os.Stderr
9598

99+
streamHandler, _ := log.NewStreamHandler(os.Stdout)
100+
d.Logger = log.NewDefault(streamHandler)
101+
96102
return d, nil
97103
}
98104

@@ -306,7 +312,7 @@ func (d *Dumper) Dump(w io.Writer) error {
306312
}
307313

308314
args[passwordArgIndex] = "--password=******"
309-
log.Infof("exec mysqldump with %v", args)
315+
d.Logger.Infof("exec mysqldump with %v", args)
310316
args[passwordArgIndex] = passwordArg
311317
cmd := exec.Command(d.ExecutionPath, args...)
312318

0 commit comments

Comments
 (0)