From 93a58a36bf2f96f9acf76ef551af6a923155a441 Mon Sep 17 00:00:00 2001 From: Christian Schwarz Date: Mon, 11 Sep 2017 15:37:45 +0200 Subject: [PATCH] util: add PrefixLogger --- cmd/config_prune_grid.go | 34 ++++++++++++++++------------------ util/logging.go | 20 ++++++++++++++++++++ 2 files changed, 36 insertions(+), 18 deletions(-) create mode 100644 util/logging.go diff --git a/cmd/config_prune_grid.go b/cmd/config_prune_grid.go index 16fa3f4..b9a8883 100644 --- a/cmd/config_prune_grid.go +++ b/cmd/config_prune_grid.go @@ -1,23 +1,22 @@ package cmd import ( - "github.com/mitchellh/mapstructure" "fmt" - "time" - . "github.com/zrepl/zrepl/util" + "github.com/mitchellh/mapstructure" "github.com/pkg/errors" - "regexp" + "github.com/zrepl/zrepl/util" "github.com/zrepl/zrepl/zfs" + "regexp" "sort" "strconv" "strings" + "time" ) type GridPrunePolicy struct { - RetentionGrid *RetentionGrid + RetentionGrid *util.RetentionGrid } - type retentionGridAdaptor struct { zfs.FilesystemVersion } @@ -26,14 +25,14 @@ func (a retentionGridAdaptor) Date() time.Time { return a.Creation } -func (a retentionGridAdaptor) LessThan(b RetentionGridEntry) bool { +func (a retentionGridAdaptor) LessThan(b util.RetentionGridEntry) bool { return a.CreateTXG < b.(retentionGridAdaptor).CreateTXG } func (p *GridPrunePolicy) Prune(fs zfs.DatasetPath, versions []zfs.FilesystemVersion) (keep, remove []zfs.FilesystemVersion, err error) { // Build adaptors for retention grid - adaptors := make([]RetentionGridEntry, len(versions)) + adaptors := make([]util.RetentionGridEntry, len(versions)) for fsv := range versions { adaptors[fsv] = retentionGridAdaptor{versions[fsv]} } @@ -62,7 +61,7 @@ func (p *GridPrunePolicy) Prune(fs zfs.DatasetPath, versions []zfs.FilesystemVer func parseGridPrunePolicy(e map[string]interface{}) (p *GridPrunePolicy, err error) { var i struct { - Grid string + Grid string } if err = mapstructure.Decode(e, &i); err != nil { @@ -89,12 +88,11 @@ func parseGridPrunePolicy(e map[string]interface{}) (p *GridPrunePolicy, err err lastDuration = intervals[i].Length } } - p.RetentionGrid = NewRetentionGrid(intervals) + p.RetentionGrid = util.NewRetentionGrid(intervals) return } - var durationStringRegex *regexp.Regexp = regexp.MustCompile(`^\s*(\d+)\s*(s|m|h|d|w)\s*$`) func parseDuration(e string) (d time.Duration, err error) { @@ -133,7 +131,7 @@ func parseDuration(e string) (d time.Duration, err error) { var retentionStringIntervalRegex *regexp.Regexp = regexp.MustCompile(`^\s*(\d+)\s*x\s*([^\(]+)\s*(\((.*)\))?\s*$`) -func parseRetentionGridIntervalString(e string) (intervals []RetentionInterval, err error) { +func parseRetentionGridIntervalString(e string) (intervals []util.RetentionInterval, err error) { comps := retentionStringIntervalRegex.FindStringSubmatch(e) if comps == nil { @@ -164,7 +162,7 @@ func parseRetentionGridIntervalString(e string) (intervals []RetentionInterval, return } if res[1] == "all" { - keepCount = RetentionGridKeepCountAll + keepCount = util.RetentionGridKeepCountAll } else { keepCount, err = strconv.Atoi(res[1]) if err != nil { @@ -174,9 +172,9 @@ func parseRetentionGridIntervalString(e string) (intervals []RetentionInterval, } } - intervals = make([]RetentionInterval, times) + intervals = make([]util.RetentionInterval, times) for i := range intervals { - intervals[i] = RetentionInterval{ + intervals[i] = util.RetentionInterval{ Length: duration, KeepCount: keepCount, } @@ -186,10 +184,10 @@ func parseRetentionGridIntervalString(e string) (intervals []RetentionInterval, } -func parseRetentionGridIntervalsString(s string) (intervals []RetentionInterval, err error) { +func parseRetentionGridIntervalsString(s string) (intervals []util.RetentionInterval, err error) { ges := strings.Split(s, "|") - intervals = make([]RetentionInterval, 0, 7*len(ges)) + intervals = make([]util.RetentionInterval, 0, 7*len(ges)) for intervalIdx, e := range ges { parsed, err := parseRetentionGridIntervalString(e) @@ -200,4 +198,4 @@ func parseRetentionGridIntervalsString(s string) (intervals []RetentionInterval, } return -} \ No newline at end of file +} diff --git a/util/logging.go b/util/logging.go new file mode 100644 index 0000000..8b67702 --- /dev/null +++ b/util/logging.go @@ -0,0 +1,20 @@ +package util + +import "fmt" + +type Logger interface { + Printf(format string, args ...interface{}) +} + +type PrefixLogger struct { + Log Logger + Prefix string +} + +func NewPrefixLogger(logger Logger, prefix string) (l PrefixLogger) { + return PrefixLogger{logger, prefix} +} + +func (l PrefixLogger) Printf(format string, v ...interface{}) { + l.Log.Printf(fmt.Sprintf("[%s]: %s", l.Prefix, format), v...) +}