aboutsummaryrefslogtreecommitdiff
path: root/log.go
diff options
context:
space:
mode:
Diffstat (limited to 'log.go')
-rw-r--r--log.go41
1 files changed, 41 insertions, 0 deletions
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)
+}