From 3b6d79ec674f8e4d88df52476ae446a58c4634e1 Mon Sep 17 00:00:00 2001 From: Christian Schwarz Date: Wed, 3 May 2017 17:48:29 +0200 Subject: [PATCH] jobrun: log through abstract logger interface instead of stderr --- cmd/main.go | 5 ++++- jobrun/jobrun.go | 16 ++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/cmd/main.go b/cmd/main.go index 6c77dda..66de0c4 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -5,6 +5,8 @@ import ( "fmt" "github.com/urfave/cli" "github.com/zrepl/zrepl/jobrun" + "log" + "os" "sync" "time" ) @@ -30,7 +32,8 @@ func main() { return } - runner = jobrun.NewJobRunner() + jobrunLogger := log.New(os.Stderr, "jobrun: ", log.LUTC|log.Ldate|log.Ltime) + runner = jobrun.NewJobRunner(jobrunLogger) return } app.Commands = []cli.Command{ diff --git a/jobrun/jobrun.go b/jobrun/jobrun.go index 9a0b588..1be8f00 100644 --- a/jobrun/jobrun.go +++ b/jobrun/jobrun.go @@ -1,11 +1,13 @@ package jobrun import ( - "fmt" - "os" "time" ) +type Logger interface { + Printf(format string, v ...interface{}) +} + type Job struct { Name string RunFunc func() (err error) @@ -16,6 +18,7 @@ type Job struct { } type JobRunner struct { + logger Logger notificationChan chan Job newJobChan chan Job finishedJobChan chan Job @@ -24,8 +27,9 @@ type JobRunner struct { running map[string]Job } -func NewJobRunner() *JobRunner { +func NewJobRunner(logger Logger) *JobRunner { return &JobRunner{ + logger: logger, notificationChan: make(chan Job), newJobChan: make(chan Job), finishedJobChan: make(chan Job), @@ -66,9 +70,9 @@ loop: runTime := time.Since(finishedJob.LastStart) - fmt.Fprintf(os.Stderr, "[%s] finished after %v\n", finishedJob.Name, runTime) + r.logger.Printf("[%s] finished after %v\n", finishedJob.Name, runTime) if runTime > finishedJob.Interval { - fmt.Fprintf(os.Stderr, "[%s] WARN: job exceeded interval of %v\n", finishedJob.Name, finishedJob.Interval) + r.logger.Printf("[%s] job exceeded interval of %v\n", finishedJob.Name, finishedJob.Interval) } delete(r.running, finishedJob.Name) @@ -121,7 +125,7 @@ loop: if jobPending || len(r.running) > 0 { nextJobDue = nextJobDue.Add(time.Second).Round(time.Second) - fmt.Fprintf(os.Stderr, "jobrun: waiting until %v\n", nextJobDue) + r.logger.Printf("waiting until %v\n", nextJobDue) r.scheduleTimer = time.After(nextJobDue.Sub(now)) goto loop }