+14
-7
internal/log/log.go
+14
-7
internal/log/log.go
···
6
"log"
7
"os"
8
"strings"
9
)
10
11
var (
···
21
verboseWriter = os.Stdout
22
}
23
24
-
infoLog = log.New(infoWriter, "INFO: ", log.Ldate|log.Ltime|log.Lshortfile)
25
-
verboseLog = log.New(verboseWriter, "VERBOSE: ", log.Ldate|log.Ltime|log.Lshortfile)
26
-
errorLog = log.New(os.Stderr, "ERROR: ", log.Ldate|log.Ltime|log.Lshortfile)
27
}
28
29
func Verbose(format string, v ...interface{}) {
30
-
verboseLog.Printf(format, v...)
31
}
32
33
func Info(format string, v ...interface{}) {
34
-
infoLog.Printf(format, v...)
35
}
36
37
func Error(format string, v ...interface{}) {
38
-
errorLog.Printf(format, v...)
39
}
40
41
func Fatal(format string, v ...interface{}) {
42
-
errorLog.Fatalf(format, v...)
43
}
44
45
// Banner prints a startup banner
···
6
"log"
7
"os"
8
"strings"
9
+
"time"
10
)
11
12
var (
···
22
verboseWriter = os.Stdout
23
}
24
25
+
// Use no flags, we'll add our own ISO 8601 timestamps
26
+
infoLog = log.New(infoWriter, "", 0)
27
+
verboseLog = log.New(verboseWriter, "", 0)
28
+
errorLog = log.New(os.Stderr, "", 0)
29
+
}
30
+
31
+
// timestamp returns current time in ISO 8601 format
32
+
func timestamp() string {
33
+
return time.Now().Format(time.RFC3339)
34
}
35
36
func Verbose(format string, v ...interface{}) {
37
+
verboseLog.Printf("%s [VERBOSE] %s", timestamp(), fmt.Sprintf(format, v...))
38
}
39
40
func Info(format string, v ...interface{}) {
41
+
infoLog.Printf("%s [INFO] %s", timestamp(), fmt.Sprintf(format, v...))
42
}
43
44
func Error(format string, v ...interface{}) {
45
+
errorLog.Printf("%s [ERROR] %s", timestamp(), fmt.Sprintf(format, v...))
46
}
47
48
func Fatal(format string, v ...interface{}) {
49
+
errorLog.Fatalf("%s [FATAL] %s", timestamp(), fmt.Sprintf(format, v...))
50
}
51
52
// Banner prints a startup banner