Documentation
¶
Overview ¶
Package handler provide some common log handlers. eg: file, console, multi_file, rotate_file, stream, syslog, email
Index ¶
- Constants
- Variables
- type BufferedHandler
- type ConsoleHandler
- type EmailHandler
- type FileHandler
- func (h *FileHandler) Close() error
- func (h *FileHandler) Configure(fn func(h *FileHandler)) *FileHandler
- func (h *FileHandler) Flush() error
- func (h *FileHandler) Handle(r *slog.Record) (err error)
- func (l *FileHandler) Lock()
- func (l *FileHandler) LockEnabled() bool
- func (h *FileHandler) ReopenFile() error
- func (l *FileHandler) Unlock()
- func (l *FileHandler) UseLock(enable bool)
- func (h *FileHandler) Writer() io.Writer
- type GroupedHandler
- type LevelWithFormatter
- type LevelsWithFormatter
- type MultiFileHandler
- type RotateFileHandler
- type SimpleFileHandler
- func (h *SimpleFileHandler) Close() error
- func (h *SimpleFileHandler) Flush() error
- func (h *SimpleFileHandler) Handle(r *slog.Record) (err error)
- func (l *SimpleFileHandler) Lock()
- func (l *SimpleFileHandler) LockEnabled() bool
- func (h *SimpleFileHandler) ReopenFile() error
- func (l *SimpleFileHandler) Unlock()
- func (l *SimpleFileHandler) UseLock(enable bool)
- func (h *SimpleFileHandler) Writer() io.Writer
- type StreamHandler
- type SysLogHandler
- type TimeRotateFileHandler
- func (h *TimeRotateFileHandler) Close() error
- func (h *TimeRotateFileHandler) Flush() error
- func (h *TimeRotateFileHandler) Handle(r *slog.Record) (err error)
- func (l *TimeRotateFileHandler) Lock()
- func (l *TimeRotateFileHandler) LockEnabled() bool
- func (l *TimeRotateFileHandler) Unlock()
- func (l *TimeRotateFileHandler) UseLock(enable bool)
Examples ¶
Constants ¶
const ( EveryDay rotateType = iota EveryHour Every30Minutes EveryMinute EverySecond // only use for tests )
Variables ¶
Functions ¶
This section is empty.
Types ¶
type BufferedHandler ¶
type BufferedHandler struct {
LevelsWithFormatter
// options:
// BuffSize for buffer
BuffSize int
// contains filtered or unexported fields
}
BufferedHandler definition
func NewBufferedHandler ¶
func NewBufferedHandler(handler slog.WriterHandler, bufSize int) *BufferedHandler
NewBufferedHandler create new BufferedHandler
func (*BufferedHandler) Flush ¶
func (h *BufferedHandler) Flush() error
Flush all buffers to the `h.handler.Writer()`
func (*BufferedHandler) Handle ¶
func (h *BufferedHandler) Handle(record *slog.Record) error
Handle log record
func (*BufferedHandler) LockEnabled ¶ added in v0.1.0
func (l *BufferedHandler) LockEnabled() bool
LockEnabled status
type ConsoleHandler ¶
type ConsoleHandler struct {
StreamHandler
}
ConsoleHandler definition
func NewConsoleHandler ¶
func NewConsoleHandler(levels []slog.Level) *ConsoleHandler
NewConsoleHandler create new ConsoleHandler
func (*ConsoleHandler) LockEnabled ¶ added in v0.1.0
func (l *ConsoleHandler) LockEnabled() bool
LockEnabled status
func (*ConsoleHandler) TextFormatter ¶ added in v0.0.5
func (h *ConsoleHandler) TextFormatter() *slog.TextFormatter
TextFormatter get the formatter
type EmailHandler ¶ added in v0.0.5
type EmailHandler struct {
// LevelWithFormatter support level and formatter
LevelWithFormatter
}
EmailHandler struct
type FileHandler ¶
type FileHandler struct {
// LevelsWithFormatter support limit log levels and formatter
LevelsWithFormatter
// NoBuffer on write log records
NoBuffer bool
// BuffSize for enable buffer
BuffSize int
// contains filtered or unexported fields
}
FileHandler definition
func JSONFileHandler ¶
func JSONFileHandler(filepath string) (*FileHandler, error)
JSONFileHandler create new FileHandler with JSON formatter
func MustFileHandler ¶ added in v0.1.0
func MustFileHandler(filepath string, useJSON bool) *FileHandler
MustFileHandler create file handler
func NewFileHandler ¶
func NewFileHandler(filepath string, useJSON bool) (*FileHandler, error)
NewFileHandler create new FileHandler
func (*FileHandler) Close ¶
func (h *FileHandler) Close() error
Close handler, will be flush logs to file, then close file
func (*FileHandler) Configure ¶
func (h *FileHandler) Configure(fn func(h *FileHandler)) *FileHandler
Configure the handler
func (*FileHandler) Handle ¶
func (h *FileHandler) Handle(r *slog.Record) (err error)
Handle the log record
func (*FileHandler) LockEnabled ¶ added in v0.1.0
func (l *FileHandler) LockEnabled() bool
LockEnabled status
func (*FileHandler) ReopenFile ¶ added in v0.1.0
func (h *FileHandler) ReopenFile() error
ReopenFile the log file
type GroupedHandler ¶
type GroupedHandler struct {
// Levels for log message
Levels []slog.Level
// IgnoreErr on handling messages
IgnoreErr bool
// contains filtered or unexported fields
}
GroupedHandler definition
func NewGroupedHandler ¶
func NewGroupedHandler(handlers []slog.Handler) *GroupedHandler
NewGroupedHandler create new GroupedHandler
func (*GroupedHandler) Handle ¶
func (h *GroupedHandler) Handle(record *slog.Record) (err error)
Handle log record
func (*GroupedHandler) IsHandling ¶
func (h *GroupedHandler) IsHandling(level slog.Level) bool
IsHandling Check if the current level can be handling
type LevelWithFormatter ¶ added in v0.0.3
type LevelWithFormatter struct {
slog.Formattable
// Level for log message. if current level >= Level will log message
Level slog.Level
}
LevelsWithFormatter struct definition
- support set log formatter - support setting multi log levels
func (*LevelWithFormatter) IsHandling ¶ added in v0.0.3
func (h *LevelWithFormatter) IsHandling(level slog.Level) bool
IsHandling Check if the current level can be handling
type LevelsWithFormatter ¶ added in v0.0.3
type LevelsWithFormatter struct {
slog.Formattable
// Levels for log message
Levels []slog.Level
}
LevelsWithFormatter struct definition
- support set log formatter - only support set one log level
func (*LevelsWithFormatter) IsHandling ¶ added in v0.0.3
func (h *LevelsWithFormatter) IsHandling(level slog.Level) bool
IsHandling Check if the current level can be handling
type MultiFileHandler ¶ added in v0.0.3
type MultiFileHandler struct {
// FileDir for save log files
FileDir string
// Files can use multi file for record level logs. eg:
// "error.log": []slog.Level{slog.Warn, slog.Error},
// "info.log": []slog.Level{slog.Trace, slog.Info, slog.Notice}
// FileLevels map[string][]slog.Level
FileLevels map[string]slog.Levels
// NoBuffer on write log records
NoBuffer bool
// FileFlag for create. default: os.O_CREATE|os.O_WRONLY|os.O_APPEND
FileFlag int
// FileMode perm for create log file. (it's os.FileMode)
FileMode uint32
// BuffSize for enable buffer
BuffSize int
// file contents max size
MaxSize uint64
// contains filtered or unexported fields
}
MultiFileHandler definition
func NewMultiFileHandler ¶ added in v0.0.3
func NewMultiFileHandler() *MultiFileHandler
NewMultiFileHandler instance
Example ¶
package main
import (
"github.com/gookit/slog"
"github.com/gookit/slog/handler"
)
func main() {
h := &handler.MultiFileHandler{
FileDir: "testdata/multifiles",
FileLevels: map[string]slog.Levels{
"error.log": {slog.ErrorLevel, slog.WarnLevel},
"info.log": {slog.InfoLevel, slog.NoticeLevel, slog.DebugLevel, slog.TraceLevel},
},
}
slog.AddHandler(h)
// add logs
slog.Info("info messages")
}
func (*MultiFileHandler) Close ¶ added in v0.0.5
func (h *MultiFileHandler) Close() error
func (*MultiFileHandler) Flush ¶ added in v0.0.5
func (h *MultiFileHandler) Flush() error
func (*MultiFileHandler) Handle ¶ added in v0.0.5
func (h *MultiFileHandler) Handle(record *slog.Record) error
func (*MultiFileHandler) IsHandling ¶ added in v0.0.5
func (h *MultiFileHandler) IsHandling(level slog.Level) bool
IsHandling Check if the current level can be handling
type RotateFileHandler ¶
type RotateFileHandler struct {
FileHandler
// file contents max size
MaxSize uint64
// RenameFunc build filename for rotate file
RenameFunc func(baseFile string, rotateNum uint) string
// contains filtered or unexported fields
}
RotateFileHandler struct definition
func NewRotateFileHandler ¶ added in v0.1.0
func NewRotateFileHandler(filepath string, maxSize uint64) (*RotateFileHandler, error)
NewRotateFileHandler instance
func (*RotateFileHandler) Handle ¶ added in v0.1.0
func (h *RotateFileHandler) Handle(r *slog.Record) (err error)
Handle the log record
func (*RotateFileHandler) LockEnabled ¶ added in v0.1.0
func (l *RotateFileHandler) LockEnabled() bool
LockEnabled status
type SimpleFileHandler ¶ added in v0.1.0
type SimpleFileHandler struct {
// LevelWithFormatter support level and formatter
LevelWithFormatter
// contains filtered or unexported fields
}
SimpleFileHandler struct
func NewSimpleFileHandler ¶ added in v0.1.0
func NewSimpleFileHandler(filepath string) (*SimpleFileHandler, error)
NewSimpleFileHandler instance
Usage:
h, err := NewSimpleFileHandler("", DefaultFileFlags)
custom file flags
h, err := NewSimpleFileHandler("", os.O_CREATE | os.O_WRONLY | os.O_APPEND)
custom formatter
h.SetFormatter(slog.NewJSONFormatter())
slog.PushHandler(h)
slog.Info("log message")
func (*SimpleFileHandler) Close ¶ added in v0.1.0
func (h *SimpleFileHandler) Close() error
Close handler, will be flush logs to file, then close file
func (*SimpleFileHandler) Flush ¶ added in v0.1.0
func (h *SimpleFileHandler) Flush() error
Flush logs to disk file
func (*SimpleFileHandler) Handle ¶ added in v0.1.0
func (h *SimpleFileHandler) Handle(r *slog.Record) (err error)
Handle the log record
func (*SimpleFileHandler) LockEnabled ¶ added in v0.1.0
func (l *SimpleFileHandler) LockEnabled() bool
LockEnabled status
func (*SimpleFileHandler) ReopenFile ¶ added in v0.1.0
func (h *SimpleFileHandler) ReopenFile() error
ReopenFile the log file
type StreamHandler ¶
type StreamHandler struct {
LevelsWithFormatter
// Output io.WriteCloser
Output io.Writer
// contains filtered or unexported fields
}
StreamHandler definition
func NewStreamHandler ¶
func NewStreamHandler(out io.Writer, levels []slog.Level) *StreamHandler
NewStreamHandler create new StreamHandler Usage:
buf := new(bytes.Buffer)
h := handler.NewStreamHandler(&buf, slog.AllLevels)
f, err := os.OpenFile("my.log", ...)
h := handler.NewStreamHandler(f, slog.AllLevels)
func (*StreamHandler) Flush ¶ added in v0.1.0
func (h *StreamHandler) Flush() error
Flush the handler
func (*StreamHandler) Handle ¶
func (h *StreamHandler) Handle(record *slog.Record) error
Handle log record
func (*StreamHandler) LockEnabled ¶ added in v0.1.0
func (l *StreamHandler) LockEnabled() bool
LockEnabled status
type SysLogHandler ¶ added in v0.1.0
type SysLogHandler struct {
LevelWithFormatter
// contains filtered or unexported fields
}
SysLogHandler struct
func NewSysLogHandler ¶ added in v0.1.0
func NewSysLogHandler(priority syslog.Priority, tag string) (*SysLogHandler, error)
NewSysLogHandler instance
func (*SysLogHandler) Close ¶ added in v0.1.0
func (h *SysLogHandler) Close() error
func (*SysLogHandler) Flush ¶ added in v0.1.0
func (h *SysLogHandler) Flush() error
type TimeRotateFileHandler ¶ added in v0.1.0
type TimeRotateFileHandler struct {
// LevelsWithFormatter support limit log levels and formatter
LevelsWithFormatter
// contains filtered or unexported fields
}
TimeRotateFileHandler struct refer http://hg.python.org/cpython/file/2.7/Lib/logging/handlers.py refer https://github.com/flike/golog/blob/master/filehandler.go
func NewTimeRotateFileHandler ¶ added in v0.1.0
func NewTimeRotateFileHandler(filepath string, rt rotateType) (*TimeRotateFileHandler, error)
NewTimeRotateFileHandler instance
func (*TimeRotateFileHandler) Close ¶ added in v0.1.0
func (h *TimeRotateFileHandler) Close() error
Close handler, will be flush logs to file, then close file
func (*TimeRotateFileHandler) Flush ¶ added in v0.1.0
func (h *TimeRotateFileHandler) Flush() error
Flush logs to disk file
func (*TimeRotateFileHandler) Handle ¶ added in v0.1.0
func (h *TimeRotateFileHandler) Handle(r *slog.Record) (err error)
Handle the log record
func (*TimeRotateFileHandler) LockEnabled ¶ added in v0.1.0
func (l *TimeRotateFileHandler) LockEnabled() bool
LockEnabled status