-
Notifications
You must be signed in to change notification settings - Fork 2
/
logger.go
59 lines (47 loc) 路 1.75 KB
/
logger.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
package lightlog
// Logger is a struct that contains a pointer to LoggerCore
type Logger struct {
*LoggerCore
}
// LoggerOptions is a struct that contains options for creating a new Logger
type LoggerOptions struct {
Name string // Name of the logger
Level Level // Level of the logger
Filepath string // Filepath for the logger
}
// NewLogger creates a new Logger with the given options
func NewLogger(options *LoggerOptions) *Logger {
if options.Name == "" {
options.Name = "defaultLogger"
}
logger := &Logger{
NewLoggerCore(options.Name, options.Level),
}
logger.AddTransport("defaultConsoleTransport", NewConsoleTransport("defaultConsoleTransport", options.Level))
if options.Filepath == "" {
logger.Warn("`options.Filepath` cannot be empty")
} else {
logger.AddTransport("defaultFileTransport", NewFileTransport("defaultFileTransport", options.Level, options.Filepath))
}
return logger
}
// ConsoleLogger is a struct that contains a pointer to LoggerCore
type ConsoleLogger struct {
*LoggerCore
}
// NewConsoleLogger creates a new ConsoleLogger with the given name and level
func NewConsoleLogger(name string, level Level) *ConsoleLogger {
logger := &ConsoleLogger{NewLoggerCore(name, level)}
logger.AddTransport("defaultConsoleTransport", NewConsoleTransport("defaultConsoleTransport", level))
return logger
}
// FileLogger is a struct that contains a pointer to LoggerCore
type FileLogger struct {
*LoggerCore
}
// NewFileLogger creates a new FileLogger with the given name, level, and filepath
func NewFileLogger(name string, level Level, filepath string) *FileLogger {
logger := &FileLogger{NewLoggerCore(name, level)}
logger.AddTransport("defaultFileTransport", NewFileTransport("defaultFileTransport", level, filepath))
return logger
}