From 0afd27ab45498e94011b08a30b9278e3ae6aa6f2 Mon Sep 17 00:00:00 2001 From: Lea Anthony Date: Fri, 12 Mar 2021 23:40:35 +1100 Subject: [PATCH] Add FileLogger option --- v2/pkg/logger/filelogger.go | 66 +++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 v2/pkg/logger/filelogger.go diff --git a/v2/pkg/logger/filelogger.go b/v2/pkg/logger/filelogger.go new file mode 100644 index 000000000..5cf68fc1a --- /dev/null +++ b/v2/pkg/logger/filelogger.go @@ -0,0 +1,66 @@ +package logger + +import ( + "log" + "os" +) + +// FileLogger is a utility to log messages to a number of destinations +type FileLogger struct { + filename string +} + +// NewFileLogger creates a new Logger. +func NewFileLogger(filename string) Logger { + return &FileLogger{ + filename: filename, + } +} + +// Print works like Sprintf. +func (l *FileLogger) Print(message string) { + f, err := os.OpenFile(l.filename, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) + if err != nil { + log.Fatal(err) + } + if _, err := f.WriteString(message); err != nil { + f.Close() + log.Fatal(err) + } + f.Close() +} + +func (l *FileLogger) Println(message string) { + l.Print(message + "\n") +} + +// Trace level logging. Works like Sprintf. +func (l *FileLogger) Trace(message string) { + l.Println("TRACE | " + message) +} + +// Debug level logging. Works like Sprintf. +func (l *FileLogger) Debug(message string) { + l.Println("DEBUG | " + message) +} + +// Info level logging. Works like Sprintf. +func (l *FileLogger) Info(message string) { + l.Println("INFO | " + message) +} + +// Warning level logging. Works like Sprintf. +func (l *FileLogger) Warning(message string) { + l.Println("WARN | " + message) +} + +// Error level logging. Works like Sprintf. +func (l *FileLogger) Error(message string) { + l.Println("ERROR | " + message) +} + +// Fatal level logging. Works like Sprintf. +func (l *FileLogger) Fatal(message string) { + l.Println("FATAL | " + message) + os.Exit(1) +}