-
Notifications
You must be signed in to change notification settings - Fork 0
/
log.go
95 lines (79 loc) · 1.95 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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
package slappy
import (
"io"
"log"
"log/syslog"
"os"
)
var logger SlapLogger
type SlapLogger interface {
Debug(string)
Info(string)
Warn(string)
Error(string)
}
type SysLogger struct {
debug bool
SyslogWriter *syslog.Writer
}
func (l *SysLogger) Debug(line string) {
if l.debug == true {
l.SyslogWriter.Debug("DEBUG: " + line)
}
}
func (l *SysLogger) Info(line string) {
l.SyslogWriter.Info("INFO : " + line)
}
func (l *SysLogger) Warn(line string) {
l.SyslogWriter.Warning("WARN : " + line)
}
func (l *SysLogger) Error(line string) {
l.SyslogWriter.Err("ERROR: " + line)
}
type Log struct {
debug bool
Debuglogger log.Logger
Infologger log.Logger
Warnlogger log.Logger
Errorlogger log.Logger
}
func (l *Log) Debug(line string) {
if l.debug == true {
l.Debuglogger.Println(line)
}
}
func (l *Log) Info(line string) {
l.Infologger.Println(line)
}
func (l *Log) Warn(line string) {
l.Warnlogger.Println(line)
}
func (l *Log) Error(line string) {
l.Errorlogger.Println(line)
}
func InitLog(log_syslog bool, logfile string, debug bool) {
if log_syslog == true {
slog, err := syslog.New(syslog.LOG_ALERT|syslog.LOG_LOCAL0, "slappy")
if err != nil {
panic(err)
}
logger = &SysLogger{debug: debug, SyslogWriter: slog}
} else {
var logwriter io.Writer = os.Stdout
if logfile != "" {
f, err := os.OpenFile(logfile, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
panic(err)
}
logwriter = io.MultiWriter(f, os.Stdout)
}
d := log.New(logwriter, "DEBUG: ", log.Ldate|log.Ltime|log.Lmicroseconds|log.LUTC)
i := log.New(logwriter, "INFO : ", log.Ldate|log.Ltime|log.Lmicroseconds|log.LUTC)
c := log.New(logwriter, "WARN : ", log.Ldate|log.Ltime|log.Lmicroseconds|log.LUTC)
e := log.New(logwriter, "ERROR: ", log.Ldate|log.Ltime|log.Lmicroseconds|log.LUTC)
logger = &Log{debug: debug, Debuglogger: *d, Infologger: *i, Warnlogger: *c, Errorlogger: *e}
}
}
func Logger() SlapLogger {
return logger
}