/
loggers.go
46 lines (38 loc) · 1.15 KB
/
loggers.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
// Copyright (c) 2020-2022, The OneBot Contributors. All rights reserved.
package onelib
import (
"io"
"log"
"os"
)
const (
// DEBUG is a relic constant, it will be removed in favour of something else in the future.
DEBUG = 1
)
type logger struct {
*log.Logger
}
var (
// Error is used for logging errors. It outputs to stderr and file.
Error *logger
// Info is used for logging information. It outputs to stdout and file.
Info *logger
// Debug is used for logging miscellaneous things, mostly for debugging code. It outputs to stdout.
Debug *logger
)
// InitLoggers is supposed to only be called once, it initializes the loggers, opening any related logfiles.
func InitLoggers(logfile string) {
var (
file *os.File
err error
)
file, err = os.OpenFile(logfile, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
log.Fatalln("Failed to open log file:", err)
}
Error = &logger{log.New(io.MultiWriter(file, os.Stderr), "[error] ", log.Ldate|log.Ltime|log.Lshortfile)}
Info = &logger{log.New(io.MultiWriter(file, os.Stdout), "[info] ", log.Ldate|log.Ltime)}
if DEBUG > 0 {
Debug = &logger{log.New(os.Stdout, "[debug] ", log.Ltime)}
}
}