From b7cca3fa832737c745d41ee7f1697fce88bde812 Mon Sep 17 00:00:00 2001 From: Dan Ballard Date: Mon, 12 Aug 2019 14:17:17 -0700 Subject: [PATCH] log now suports creating a logger around a file --- log/log.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/log/log.go b/log/log.go index ddeb098..d22e55f 100644 --- a/log/log.go +++ b/log/log.go @@ -39,8 +39,23 @@ func New(level Level) *Logger { return &Logger{logger: golog.New(os.Stderr, "", golog.Ldate|golog.Ltime), level: level, everythingFromPatterns: make([]string, 0), nothingExceptPatterns: make([]string, 0)} } +// NewFile returns a new Logger that logs to the supplied file with a filter set to the supplied level +func NewFile(level Level, filename string) (*Logger, error) { + logfile, err := os.OpenFile(filename, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0600) + if err != nil { + return nil, err + } + + return &Logger{logger: golog.New(logfile, "", golog.Ldate|golog.Ltime), level: level, everythingFromPatterns: make([]string, 0), nothingExceptPatterns: make([]string, 0)}, nil +} + var std = New(LevelWarn) +// SetStd sets the default logger all other functions use +func SetStd(logger *Logger) { + std = logger +} + // filter func (l *Logger) filter(level Level) bool {