-
Notifications
You must be signed in to change notification settings - Fork 27
/
Copy pathfile.go
61 lines (51 loc) · 1.78 KB
/
file.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
package handler
import (
"github.com/gookit/goutil/basefn"
"github.com/gookit/slog"
)
// JSONFileHandler create new FileHandler with JSON formatter
func JSONFileHandler(logfile string, fns ...ConfigFn) (*SyncCloseHandler, error) {
return NewFileHandler(logfile, append(fns, WithUseJSON(true))...)
}
// NewBuffFileHandler create file handler with buff size
func NewBuffFileHandler(logfile string, buffSize int, fns ...ConfigFn) (*SyncCloseHandler, error) {
return NewFileHandler(logfile, append(fns, WithBuffSize(buffSize))...)
}
// MustFileHandler create file handler
func MustFileHandler(logfile string, fns ...ConfigFn) *SyncCloseHandler {
return basefn.Must(NewFileHandler(logfile, fns...))
}
// NewFileHandler create new FileHandler
func NewFileHandler(logfile string, fns ...ConfigFn) (h *SyncCloseHandler, err error) {
return NewEmptyConfig(fns...).With(WithLogfile(logfile)).CreateHandler()
}
//
// ------------- simple file handler -------------
//
// MustSimpleFile new instance
func MustSimpleFile(filepath string, maxLv ...slog.Level) *SyncCloseHandler {
return basefn.Must(NewSimpleFileHandler(filepath, maxLv...))
}
// NewSimpleFile new instance
func NewSimpleFile(filepath string, maxLv ...slog.Level) (*SyncCloseHandler, error) {
return NewSimpleFileHandler(filepath, maxLv...)
}
// NewSimpleFileHandler instance, default log level is InfoLevel
//
// Usage:
//
// h, err := NewSimpleFileHandler("/tmp/error.log")
//
// Custom formatter:
//
// h.SetFormatter(slog.NewJSONFormatter())
// slog.PushHandler(h)
// slog.Info("log message")
func NewSimpleFileHandler(filePath string, maxLv ...slog.Level) (*SyncCloseHandler, error) {
file, err := QuickOpenFile(filePath)
if err != nil {
return nil, err
}
h := SyncCloserWithMaxLevel(file, basefn.FirstOr(maxLv, slog.InfoLevel))
return h, nil
}