From 55463e5f2689f9f820bc33ed4739a79d4c9b6645 Mon Sep 17 00:00:00 2001 From: Christian Schwarz Date: Wed, 3 May 2017 18:13:50 +0200 Subject: [PATCH] jobrun: per-job logger --- cmd/main.go | 13 +++++++------ jobrun/jobrun.go | 15 +++++++++++++-- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/cmd/main.go b/cmd/main.go index 66de0c4..a776d86 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -13,6 +13,7 @@ import ( var conf Config var runner *jobrun.JobRunner +var logFlags int = log.LUTC | log.Ldate | log.Ltime func main() { @@ -32,7 +33,7 @@ func main() { return } - jobrunLogger := log.New(os.Stderr, "jobrun: ", log.LUTC|log.Ldate|log.Ltime) + jobrunLogger := log.New(os.Stderr, "jobrun ", logFlags) runner = jobrun.NewJobRunner(jobrunLogger) return } @@ -81,10 +82,10 @@ func doRun(c *cli.Context) error { Name: fmt.Sprintf("pull%d", i), Interval: time.Duration(5 * time.Second), Repeats: true, - RunFunc: func() error { - fmt.Printf("%v: %#v\n", time.Now(), pull) + RunFunc: func(log jobrun.Logger) error { + log.Printf("%v: %#v\n", time.Now(), pull) time.Sleep(10 * time.Second) - fmt.Printf("%v: %#v\n", time.Now(), pull) + log.Printf("%v: %#v\n", time.Now(), pull) return nil }, } @@ -99,8 +100,8 @@ func doRun(c *cli.Context) error { Name: fmt.Sprintf("push%d", i), Interval: time.Duration(5 * time.Second), Repeats: true, - RunFunc: func() error { - fmt.Printf("%v: %#v\n", time.Now(), push) + RunFunc: func(log jobrun.Logger) error { + log.Printf("%v: %#v\n", time.Now(), push) return nil }, } diff --git a/jobrun/jobrun.go b/jobrun/jobrun.go index 1be8f00..c34ea7f 100644 --- a/jobrun/jobrun.go +++ b/jobrun/jobrun.go @@ -1,6 +1,7 @@ package jobrun import ( + "fmt" "time" ) @@ -8,9 +9,18 @@ type Logger 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 { Name string - RunFunc func() (err error) + RunFunc func(log Logger) (err error) LastStart time.Time LastError error Interval time.Duration @@ -114,7 +124,8 @@ loop: job.LastStart = now 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 r.notificationChan <- job }