mirror of
https://github.com/zrepl/zrepl.git
synced 2025-08-14 09:08:24 +02:00
jobrun: per-job logger
This commit is contained in:
13
cmd/main.go
13
cmd/main.go
@ -13,6 +13,7 @@ import (
|
|||||||
|
|
||||||
var conf Config
|
var conf Config
|
||||||
var runner *jobrun.JobRunner
|
var runner *jobrun.JobRunner
|
||||||
|
var logFlags int = log.LUTC | log.Ldate | log.Ltime
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
||||||
@ -32,7 +33,7 @@ func main() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
jobrunLogger := log.New(os.Stderr, "jobrun: ", log.LUTC|log.Ldate|log.Ltime)
|
jobrunLogger := log.New(os.Stderr, "jobrun ", logFlags)
|
||||||
runner = jobrun.NewJobRunner(jobrunLogger)
|
runner = jobrun.NewJobRunner(jobrunLogger)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -81,10 +82,10 @@ func doRun(c *cli.Context) error {
|
|||||||
Name: fmt.Sprintf("pull%d", i),
|
Name: fmt.Sprintf("pull%d", i),
|
||||||
Interval: time.Duration(5 * time.Second),
|
Interval: time.Duration(5 * time.Second),
|
||||||
Repeats: true,
|
Repeats: true,
|
||||||
RunFunc: func() error {
|
RunFunc: func(log jobrun.Logger) error {
|
||||||
fmt.Printf("%v: %#v\n", time.Now(), pull)
|
log.Printf("%v: %#v\n", time.Now(), pull)
|
||||||
time.Sleep(10 * time.Second)
|
time.Sleep(10 * time.Second)
|
||||||
fmt.Printf("%v: %#v\n", time.Now(), pull)
|
log.Printf("%v: %#v\n", time.Now(), pull)
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -99,8 +100,8 @@ func doRun(c *cli.Context) error {
|
|||||||
Name: fmt.Sprintf("push%d", i),
|
Name: fmt.Sprintf("push%d", i),
|
||||||
Interval: time.Duration(5 * time.Second),
|
Interval: time.Duration(5 * time.Second),
|
||||||
Repeats: true,
|
Repeats: true,
|
||||||
RunFunc: func() error {
|
RunFunc: func(log jobrun.Logger) error {
|
||||||
fmt.Printf("%v: %#v\n", time.Now(), push)
|
log.Printf("%v: %#v\n", time.Now(), push)
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package jobrun
|
package jobrun
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -8,9 +9,18 @@ type Logger interface {
|
|||||||
Printf(format string, v ...interface{})
|
Printf(format string, v ...interface{})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type jobLogger struct {
|
||||||
|
MainLog Logger
|
||||||
|
JobName string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l jobLogger) Printf(format string, v ...interface{}) {
|
||||||
|
l.MainLog.Printf(fmt.Sprintf("job[%s]: %s", l.JobName, format), v...)
|
||||||
|
}
|
||||||
|
|
||||||
type Job struct {
|
type Job struct {
|
||||||
Name string
|
Name string
|
||||||
RunFunc func() (err error)
|
RunFunc func(log Logger) (err error)
|
||||||
LastStart time.Time
|
LastStart time.Time
|
||||||
LastError error
|
LastError error
|
||||||
Interval time.Duration
|
Interval time.Duration
|
||||||
@ -114,7 +124,8 @@ loop:
|
|||||||
job.LastStart = now
|
job.LastStart = now
|
||||||
|
|
||||||
go func(job Job) {
|
go func(job Job) {
|
||||||
if err := job.RunFunc(); err != nil {
|
jobLog := jobLogger{r.logger, job.Name}
|
||||||
|
if err := job.RunFunc(jobLog); err != nil {
|
||||||
job.LastError = err
|
job.LastError = err
|
||||||
r.notificationChan <- job
|
r.notificationChan <- job
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user