mirror of
https://github.com/zrepl/zrepl.git
synced 2024-11-25 09:54:47 +01:00
jobrun: log through abstract logger interface instead of stderr
This commit is contained in:
parent
77f749112c
commit
3b6d79ec67
@ -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{
|
||||
|
@ -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
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user