gopackagebase/logging.go

50 lines
856 B
Go
Raw Normal View History

2022-11-09 01:06:01 -08:00
package gopackagebase
import (
"fmt"
"log"
"os"
"time"
)
type logWriter struct {
utcTime bool
2022-11-09 01:06:01 -08:00
writeToFile bool
logFile *os.File
}
func (w *logWriter) Write(bytes []byte) (int, error) {
t := time.Now()
if w.utcTime {
t = t.UTC()
}
format := t.Format(time.RFC3339)
return fmt.Fprintf(w.logFile, "%v %v", format, string(bytes))
2022-11-09 01:06:01 -08:00
}
func (w *logWriter) Cleanup() {
defer w.logFile.Close()
}
func SetupLogging(writeToFile bool, utcTime bool, logFilename string) (*logWriter, error) {
2022-11-09 01:06:01 -08:00
var err error
log.SetFlags(0)
logFile := os.Stdout
if writeToFile {
logFile, err = os.OpenFile(logFilename, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
return nil, err
}
}
writer := &logWriter{
utcTime: utcTime,
2022-11-09 01:06:01 -08:00
writeToFile: writeToFile,
logFile: logFile,
}
log.SetOutput(writer)
return writer, nil
}