From d34d6257d50608f32d73b5ea53b1efeab1072cd1 Mon Sep 17 00:00:00 2001
From: Ruben Pollan <meskio@sindominio.net>
Date: Thu, 28 Jun 2018 19:04:56 +0200
Subject: [PATCH] [feat] add logger file

- Resolves: #56
---
 main.go | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/main.go b/main.go
index 56198bd9..75745dae 100644
--- a/main.go
+++ b/main.go
@@ -18,8 +18,10 @@ package main
 import (
 	"flag"
 	"fmt"
+	"io"
 	"log"
 	"os"
+	"path"
 	"runtime"
 
 	"0xacab.org/leap/bitmask-systray/bitmask"
@@ -40,6 +42,13 @@ func main() {
 	// locking the main thread into an OS thread fixes the problem
 	runtime.LockOSThread()
 
+	logger, err := configureLogger()
+	if err != nil {
+		log.Println("Can't configure logger: %v", err)
+	} else {
+		defer logger.Close()
+	}
+
 	conf := parseConfig()
 	initPrinter()
 
@@ -55,7 +64,7 @@ func main() {
 		os.MkdirAll(bitmask.ConfigPath, os.ModePerm)
 	}
 
-	err := acquirePID()
+	err = acquirePID()
 	if err != nil {
 		log.Fatal(err)
 	}
@@ -117,6 +126,14 @@ func maybeStartVPN(b bitmask.Bitmask, conf *systrayConfig) error {
 	return err
 }
 
+func configureLogger() (io.Closer, error) {
+	logFile, err := os.OpenFile(path.Join(bitmask.ConfigPath, "systray.log"), os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
+	if err == nil {
+		log.SetOutput(io.MultiWriter(logFile, os.Stderr))
+	}
+	return logFile, err
+}
+
 func initPrinter() {
 	locale, err := go_locale.DetectLocale()
 	if err != nil {
-- 
GitLab