From e2815094d1a00476ad0ab051e812b12c795dd5d2 Mon Sep 17 00:00:00 2001 From: HimbeerserverDE Date: Sun, 5 Sep 2021 17:14:08 +0200 Subject: [PATCH] Write log output to file --- .gitignore | 6 ------ log.go | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 6 deletions(-) create mode 100644 log.go diff --git a/.gitignore b/.gitignore index 2067b3f..66fd13c 100644 --- a/.gitignore +++ b/.gitignore @@ -13,9 +13,3 @@ # Dependency directories (remove the comment below to include it) # vendor/ - -# Configuration files -*.json - -# Database files -*.sqlite diff --git a/log.go b/log.go new file mode 100644 index 0000000..0b44ffb --- /dev/null +++ b/log.go @@ -0,0 +1,41 @@ +package main + +import ( + "log" + "os" + "path/filepath" +) + +type LogWriter struct { + f *os.File +} + +func (lw *LogWriter) Write(p []byte) (n int, err error) { + n, err = os.Stderr.Write(p) + if err != nil { + return + } + + return lw.f.Write(p) +} + +func init() { + executable, err := os.Executable() + if err != nil { + log.Fatal(err) + } + + path := filepath.Dir(executable) + "/latest.log" + f, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666) + if err != nil { + log.Fatal(err) + } + + go func() { + defer f.Close() + select {} + }() + + lw := &LogWriter{f} + log.SetOutput(lw) +}