/
log.go
55 lines (49 loc) · 1.02 KB
/
log.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package main
import (
"github.com/hashicorp/logutils"
"io"
"log"
"os"
"os/signal"
"syscall"
)
var (
reloadLogs chan os.Signal
logFile string
)
func openFileLog(filename string) io.Writer {
file, err := os.OpenFile(filename, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
log.Fatal("[ERROR] Failed to open log file ", filename, ", error: ", err)
}
return file
}
func startLogging() {
logOpen()
reloadLogs = make(chan os.Signal)
signal.Notify(reloadLogs, syscall.SIGUSR1)
go logWatcher()
}
func logOpen() {
if logFile != "" {
logFilter.Writer = openFileLog(logFile)
} else {
if v, ok := cfg.getSection("main"); ok {
if v, ok := v.(map[string]interface{})["logfile"]; ok {
logFilter.Writer = openFileLog(v.(string))
}
if v, ok := v.(map[string]interface{})["loglevel"]; ok {
logFilter.MinLevel = logutils.LogLevel(v.(string))
}
}
}
}
func logWatcher() {
for {
sig := <-reloadLogs
if sig == syscall.SIGUSR1 {
logOpen()
log.Print("[DEBUG] Logfile reopen succesful")
}
}
}