Documentation ¶
Overview ¶
Package handler provide useful common log handlers.
eg: file, console, multi_file, rotate_file, stream, syslog, email
Example (FileHandler) ¶
package main import ( "github.com/gookit/slog" "github.com/gookit/slog/handler" ) func main() { withLevels := handler.WithLogLevels(slog.Levels{slog.PanicLevel, slog.ErrorLevel, slog.WarnLevel}) h1 := handler.MustFileHandler("/tmp/error.log", withLevels) withLevels = handler.WithLogLevels(slog.Levels{slog.InfoLevel, slog.NoticeLevel, slog.DebugLevel, slog.TraceLevel}) h2 := handler.MustFileHandler("/tmp/info.log", withLevels) slog.PushHandler(h1) slog.PushHandler(h2) // add logs slog.Info("info message") slog.Error("error message") }
Output:
Example (RotateFileHandler) ¶
package main import ( "github.com/gookit/slog" "github.com/gookit/slog/handler" ) func main() { h1 := handler.MustRotateFile("/tmp/error.log", handler.EveryHour, handler.WithLogLevels(slog.DangerLevels)) h2 := handler.MustRotateFile("/tmp/info.log", handler.EveryHour, handler.WithLogLevels(slog.NormalLevels)) slog.PushHandler(h1) slog.PushHandler(h2) // add logs slog.Info("info message") slog.Error("error message") }
Output:
Index ¶
- Constants
- Variables
- func LineBuffOsFile(f *os.File, bufSize int, levels []slog.Level) slog.Handler
- func LineBuffWriter(w io.Writer, bufSize int, levels []slog.Level) slog.Handler
- func LineBufferedFile(logfile string, bufSize int, levels []slog.Level) (slog.Handler, error)
- func QuickOpenFile(filepath string) (*os.File, error)
- type Builder
- func (b *Builder) Build() slog.FormattableHandler
- func (b *Builder) With(fns ...ConfigFn) *Builderdeprecated
- func (b *Builder) WithBuffMode(bufMode string) *Builder
- func (b *Builder) WithBuffSize(bufSize int) *Builder
- func (b *Builder) WithCompress(compress bool) *Builder
- func (b *Builder) WithConfigFn(fns ...ConfigFn) *Builder
- func (b *Builder) WithLevelMode(mode slog.LevelMode) *Builder
- func (b *Builder) WithLogLevel(level slog.Level) *Builder
- func (b *Builder) WithLogLevels(levels []slog.Level) *Builder
- func (b *Builder) WithLogfile(logfile string) *Builder
- func (b *Builder) WithMaxSize(maxSize uint64) *Builder
- func (b *Builder) WithOutput(w io.Writer) *Builder
- func (b *Builder) WithRotateTime(rt rotatefile.RotateTime) *Builder
- func (b *Builder) WithUseJSON(useJSON bool) *Builder
- type Config
- type ConfigFn
- func WithBackupNum(n uint) ConfigFn
- func WithBackupTime(bt uint) ConfigFn
- func WithBuffMode(buffMode string) ConfigFn
- func WithBuffSize(buffSize int) ConfigFn
- func WithCompress(compress bool) ConfigFn
- func WithFilePerm(filePerm fs.FileMode) ConfigFn
- func WithLevelMode(mode slog.LevelMode) ConfigFn
- func WithLevelNames(names []string) ConfigFn
- func WithLogLevel(level slog.Level) ConfigFn
- func WithLogLevels(levels slog.Levels) ConfigFn
- func WithLogfile(logfile string) ConfigFn
- func WithMaxSize(maxSize uint64) ConfigFn
- func WithRotateMode(m rotatefile.RotateMode) ConfigFn
- func WithRotateTime(rt rotatefile.RotateTime) ConfigFn
- func WithUseJSON(useJSON bool) ConfigFn
- type ConsoleHandler
- type EmailHandler
- type EmailOption
- type FlushCloseHandler
- func FlushCloserWithLevels(out FlushCloseWriter, levels []slog.Level) *FlushCloseHandler
- func FlushCloserWithMaxLevel(out FlushCloseWriter, maxLevel slog.Level) *FlushCloseHandler
- func NewBuffered(w io.WriteCloser, bufSize int, levels ...slog.Level) *FlushCloseHandler
- func NewBufferedHandler(w io.WriteCloser, bufSize int, levels ...slog.Level) *FlushCloseHandler
- func NewFlushCloseHandler(out FlushCloseWriter, levels []slog.Level) *FlushCloseHandler
- func NewFlushCloser(out FlushCloseWriter, levels []slog.Level) *FlushCloseHandler
- func NewFlushCloserWithLF(out FlushCloseWriter, lf slog.LevelFormattable) *FlushCloseHandler
- type FlushCloseWriter
- type FlushWriter
- type FormatWriterHandler
- type IOWriterHandler
- func IOWriterWithLevels(out io.Writer, levels []slog.Level) *IOWriterHandler
- func IOWriterWithMaxLevel(out io.Writer, maxLevel slog.Level) *IOWriterHandler
- func NewIOWriter(out io.Writer, levels []slog.Level) *IOWriterHandler
- func NewIOWriterHandler(out io.Writer, levels []slog.Level) *IOWriterHandler
- func NewIOWriterWithLF(out io.Writer, lf slog.LevelFormattable) *IOWriterHandler
- func NewSimpleHandler(out io.Writer, maxLevel slog.Level) *IOWriterHandler
- func SimpleWithLevels(out io.Writer, levels []slog.Level) *IOWriterHandler
- type LevelWithFormatterdeprecated
- type LevelsWithFormatterdeprecated
- type LockWrapper
- type NopFlushClose
- type RotateTimedeprecated
- type SimpleHandler
- type SyncCloseHandler
- func JSONFileHandler(logfile string, fns ...ConfigFn) (*SyncCloseHandler, error)
- func MustFileHandler(logfile string, fns ...ConfigFn) *SyncCloseHandler
- func MustRotateFile(logfile string, rt rotatefile.RotateTime, fns ...ConfigFn) *SyncCloseHandler
- func MustSimpleFile(filepath string, maxLv ...slog.Level) *SyncCloseHandler
- func MustSizeRotateFile(logfile string, maxSize int, fns ...ConfigFn) *SyncCloseHandler
- func MustTimeRotateFile(logfile string, rt rotatefile.RotateTime, fns ...ConfigFn) *SyncCloseHandler
- func NewBuffFileHandler(logfile string, buffSize int, fns ...ConfigFn) (*SyncCloseHandler, error)
- func NewFileHandler(logfile string, fns ...ConfigFn) (h *SyncCloseHandler, err error)
- func NewRotateFile(logfile string, rt rotatefile.RotateTime, fns ...ConfigFn) (*SyncCloseHandler, error)
- func NewRotateFileHandler(logfile string, rt rotatefile.RotateTime, fns ...ConfigFn) (*SyncCloseHandler, error)
- func NewSimpleFile(filepath string, maxLv ...slog.Level) (*SyncCloseHandler, error)
- func NewSimpleFileHandler(filePath string, maxLv ...slog.Level) (*SyncCloseHandler, error)
- func NewSizeRotateFile(logfile string, maxSize int, fns ...ConfigFn) (*SyncCloseHandler, error)
- func NewSizeRotateFileHandler(logfile string, maxSize int, fns ...ConfigFn) (*SyncCloseHandler, error)
- func NewSyncCloseHandler(out SyncCloseWriter, levels []slog.Level) *SyncCloseHandler
- func NewSyncCloser(out SyncCloseWriter, levels []slog.Level) *SyncCloseHandler
- func NewSyncCloserWithLF(out SyncCloseWriter, lf slog.LevelFormattable) *SyncCloseHandler
- func NewTimeRotateFile(logfile string, rt rotatefile.RotateTime, fns ...ConfigFn) (*SyncCloseHandler, error)
- func NewTimeRotateFileHandler(logfile string, rt rotatefile.RotateTime, fns ...ConfigFn) (*SyncCloseHandler, error)
- func SyncCloserWithLevels(out SyncCloseWriter, levels []slog.Level) *SyncCloseHandler
- func SyncCloserWithMaxLevel(out SyncCloseWriter, maxLevel slog.Level) *SyncCloseHandler
- type SyncCloseWriter
- type SysLogHandler
- type SysLogOpt
- type WriteCloserHandler
- func NewWriteCloser(out io.WriteCloser, levels []slog.Level) *WriteCloserHandler
- func NewWriteCloserHandler(out io.WriteCloser, levels []slog.Level) *WriteCloserHandler
- func NewWriteCloserWithLF(out io.WriteCloser, lf slog.LevelFormattable) *WriteCloserHandler
- func WriteCloserWithLevels(out io.WriteCloser, levels []slog.Level) *WriteCloserHandler
- func WriteCloserWithMaxLevel(out io.WriteCloser, maxLevel slog.Level) *WriteCloserHandler
Examples ¶
Constants ¶
const ( BuffModeLine = "line" BuffModeBite = "bite" )
the buff mode consts
const ( // LevelModeList use level list for limit record write LevelModeList = slog.LevelModeList // LevelModeValue use max level limit log record write LevelModeValue = slog.LevelModeMax )
const ( EveryDay = rotatefile.EveryDay EveryHour = rotatefile.EveryDay Every30Minutes = rotatefile.Every30Min Every15Minutes = rotatefile.Every15Min EveryMinute = rotatefile.EveryMinute EverySecond = rotatefile.EverySecond // only use for tests )
Deprecated: Please use define constants on pkg rotatefile. e.g. rotatefile.EveryDay
Variables ¶
var ( // DefaultFilePerm perm and flags for create log file DefaultFilePerm os.FileMode = 0664 // DefaultFileFlags for create/open file DefaultFileFlags = os.O_CREATE | os.O_WRONLY | os.O_APPEND )
var DefaultBufferSize = 8 * 1024
DefaultBufferSize sizes the buffer associated with each log file. It's large so that log records can accumulate without the logging thread blocking on disk I/O. The flushDaemon will block instead.
Functions ¶
func LineBuffOsFile ¶ added in v0.3.0
LineBuffOsFile handler
func LineBuffWriter ¶ added in v0.3.0
LineBuffWriter handler
func LineBufferedFile ¶ added in v0.3.0
LineBufferedFile handler
Types ¶
type Builder ¶ added in v0.3.0
Builder struct for create handler
func (*Builder) Build ¶ added in v0.3.0
func (b *Builder) Build() slog.FormattableHandler
Build slog handler.
func (*Builder) WithBuffMode ¶ added in v0.3.3
WithBuffMode setting
func (*Builder) WithBuffSize ¶ added in v0.3.3
WithBuffSize setting
func (*Builder) WithCompress ¶ added in v0.3.3
WithCompress setting
func (*Builder) WithConfigFn ¶ added in v0.5.0
WithConfigFn some config fn
func (*Builder) WithLevelMode ¶ added in v0.5.0
WithLevelMode setting
func (*Builder) WithLogLevel ¶ added in v0.5.0
WithLogLevel setting
func (*Builder) WithLogLevels ¶ added in v0.3.3
WithLogLevels setting
func (*Builder) WithLogfile ¶ added in v0.3.3
WithLogfile setting
func (*Builder) WithMaxSize ¶ added in v0.3.3
WithMaxSize setting
func (*Builder) WithOutput ¶ added in v0.3.0
WithOutput to the builder
func (*Builder) WithRotateTime ¶ added in v0.3.3
func (b *Builder) WithRotateTime(rt rotatefile.RotateTime) *Builder
WithRotateTime setting
func (*Builder) WithUseJSON ¶ added in v0.3.3
WithUseJSON setting
type Config ¶ added in v0.3.0
type Config struct { // Logfile for write logs Logfile string `json:"logfile" yaml:"logfile"` // FilePerm for create log file. default rotatefile.DefaultFilePerm FilePerm fs.FileMode `json:"file_perm" yaml:"file_perm"` // LevelMode for limit log records. default LevelModeList LevelMode slog.LevelMode `json:"level_mode" yaml:"level_mode"` // Level max value. valid on LevelMode = LevelModeValue Level slog.Level `json:"level" yaml:"level"` // Levels list for write. valid on LevelMode = LevelModeList Levels []slog.Level `json:"levels" yaml:"levels"` // UseJSON for format logs UseJSON bool `json:"use_json" yaml:"use_json"` // BuffMode type name. allow: line, bite BuffMode string `json:"buff_mode" yaml:"buff_mode"` // BuffSize for enable buffer, unit is bytes. set 0 to disable buffer BuffSize int `json:"buff_size" yaml:"buff_size"` // RotateTime for rotate file, unit is seconds. RotateTime rotatefile.RotateTime `json:"rotate_time" yaml:"rotate_time"` // RotateMode for rotate file by time. default rotatefile.ModeRename RotateMode rotatefile.RotateMode `json:"rotate_mode" yaml:"rotate_mode"` // MaxSize on rotate file by size, unit is bytes. MaxSize uint64 `json:"max_size" yaml:"max_size"` // Compress determines if the rotated log files should be compressed using gzip. // The default is not to perform compression. Compress bool `json:"compress" yaml:"compress"` // BackupNum max number for keep old files. // // 0 is not limit, default is 20. BackupNum uint `json:"backup_num" yaml:"backup_num"` // BackupTime max time for keep old files, unit is hours. // // 0 is not limit, default is a week. BackupTime uint `json:"backup_time" yaml:"backup_time"` // RenameFunc build filename for rotate file RenameFunc func(filepath string, rotateNum uint) string // DebugMode for debug on development. DebugMode bool }
Config struct
func NewEmptyConfig ¶ added in v0.3.0
NewEmptyConfig new config instance
func (*Config) CreateHandler ¶ added in v0.3.0
func (c *Config) CreateHandler() (*SyncCloseHandler, error)
CreateHandler quick create a handler by config
func (*Config) CreateWriter ¶ added in v0.3.0
func (c *Config) CreateWriter() (output SyncCloseWriter, err error)
CreateWriter build writer by config
func (*Config) RotateWriter ¶ added in v0.3.0
func (c *Config) RotateWriter() (output SyncCloseWriter, err error)
RotateWriter build rotate writer by config
func (*Config) WithConfigFn ¶ added in v0.5.0
WithConfigFn more config settings func
type ConfigFn ¶ added in v0.3.0
type ConfigFn func(c *Config)
ConfigFn for config some settings
func WithBuffMode ¶ added in v0.3.0
WithBuffMode setting
func WithFilePerm ¶ added in v0.5.2
WithFilePerm setting
func WithLevelMode ¶ added in v0.5.0
WithLevelMode setting
func WithLevelNames ¶ added in v0.5.0
WithLevelNames set levels by level names.
func WithLogLevel ¶ added in v0.5.0
WithLogLevel setting
func WithLogLevels ¶ added in v0.3.0
WithLogLevels setting
func WithRotateMode ¶ added in v0.5.2
func WithRotateMode(m rotatefile.RotateMode) ConfigFn
WithRotateMode setting
func WithRotateTime ¶ added in v0.3.0
func WithRotateTime(rt rotatefile.RotateTime) ConfigFn
WithRotateTime setting
type ConsoleHandler ¶
type ConsoleHandler = IOWriterHandler
ConsoleHandler definition
func ConsoleWithLevels ¶ added in v0.5.3
func ConsoleWithLevels(levels []slog.Level) *ConsoleHandler
ConsoleWithLevels create new ConsoleHandler and with limited log levels
func ConsoleWithMaxLevel ¶ added in v0.5.3
func ConsoleWithMaxLevel(level slog.Level) *ConsoleHandler
ConsoleWithMaxLevel create new ConsoleHandler and with max log level
func NewConsole ¶ added in v0.1.1
func NewConsole(levels []slog.Level) *ConsoleHandler
NewConsole create new ConsoleHandler, alias of NewConsoleHandler
func NewConsoleHandler ¶
func NewConsoleHandler(levels []slog.Level) *ConsoleHandler
NewConsoleHandler create new ConsoleHandler with limited log levels
func NewConsoleWithLF ¶ added in v0.5.3
func NewConsoleWithLF(lf slog.LevelFormattable) *ConsoleHandler
NewConsoleWithLF create new ConsoleHandler and with custom slog.LevelFormattable
type EmailHandler ¶ added in v0.0.5
type EmailHandler struct { NopFlushClose slog.LevelWithFormatter // From the sender email information From EmailOption // ToAddresses email list ToAddresses []string }
EmailHandler struct
func NewEmailHandler ¶ added in v0.1.1
func NewEmailHandler(from EmailOption, toAddresses []string) *EmailHandler
NewEmailHandler instance
type EmailOption ¶ added in v0.1.1
type EmailOption struct { SMTPHost string `json:"smtp_host"` // eg "smtp.gmail.com" SMTPPort int `json:"smtp_port"` // eg 587 FromAddr string `json:"from_addr"` // eg "yourEmail@gmail.com" Password string `json:"password"` }
EmailOption struct
type FlushCloseHandler ¶ added in v0.3.0
type FlushCloseHandler struct { slog.LevelFormattable Output FlushCloseWriter }
FlushCloseHandler definition
func FlushCloserWithLevels ¶ added in v0.5.3
func FlushCloserWithLevels(out FlushCloseWriter, levels []slog.Level) *FlushCloseHandler
FlushCloserWithLevels create new FlushCloseHandler, alias of NewFlushCloseHandler()
func FlushCloserWithMaxLevel ¶ added in v0.5.3
func FlushCloserWithMaxLevel(out FlushCloseWriter, maxLevel slog.Level) *FlushCloseHandler
FlushCloserWithMaxLevel create new FlushCloseHandler, with max log level
func NewBuffered ¶ added in v0.1.2
func NewBuffered(w io.WriteCloser, bufSize int, levels ...slog.Level) *FlushCloseHandler
NewBuffered create new BufferedHandler
func NewBufferedHandler ¶
func NewBufferedHandler(w io.WriteCloser, bufSize int, levels ...slog.Level) *FlushCloseHandler
NewBufferedHandler create new BufferedHandler
func NewFlushCloseHandler ¶ added in v0.3.0
func NewFlushCloseHandler(out FlushCloseWriter, levels []slog.Level) *FlushCloseHandler
NewFlushCloseHandler create new FlushCloseHandler
Usage:
buf := new(bytes.Buffer) h := handler.NewFlushCloseHandler(&buf, slog.AllLevels) f, err := os.OpenFile("my.log", ...) h := handler.NewFlushCloseHandler(f, slog.AllLevels)
func NewFlushCloser ¶ added in v0.3.0
func NewFlushCloser(out FlushCloseWriter, levels []slog.Level) *FlushCloseHandler
NewFlushCloser create new FlushCloseHandler, alias of NewFlushCloseHandler()
func NewFlushCloserWithLF ¶ added in v0.5.3
func NewFlushCloserWithLF(out FlushCloseWriter, lf slog.LevelFormattable) *FlushCloseHandler
NewFlushCloserWithLF create new FlushCloseHandler, with custom slog.LevelFormattable
func (*FlushCloseHandler) Close ¶ added in v0.3.0
func (h *FlushCloseHandler) Close() error
Close the handler
func (*FlushCloseHandler) Flush ¶ added in v0.3.0
func (h *FlushCloseHandler) Flush() error
Flush the handler
type FlushCloseWriter ¶ added in v0.3.0
type FlushCloseWriter interface { Flush() error // WriteCloser the output writer io.WriteCloser }
FlushCloseWriter is the interface satisfied by logging destinations.
type FlushWriter ¶ added in v0.3.0
FlushWriter is the interface satisfied by logging destinations.
type FormatWriterHandler ¶ added in v0.5.3
type FormatWriterHandler interface { slog.Handler // Formatter record formatter Formatter() slog.Formatter // Writer the output writer Writer() io.Writer }
FormatWriterHandler interface
type IOWriterHandler ¶ added in v0.1.2
type IOWriterHandler struct { NopFlushClose slog.LevelFormattable Output io.Writer }
IOWriterHandler definition
func IOWriterWithLevels ¶ added in v0.5.3
func IOWriterWithLevels(out io.Writer, levels []slog.Level) *IOWriterHandler
IOWriterWithLevels create a new instance and with limited log levels
func IOWriterWithMaxLevel ¶ added in v0.5.3
func IOWriterWithMaxLevel(out io.Writer, maxLevel slog.Level) *IOWriterHandler
IOWriterWithMaxLevel create new IOWriterHandler, with max log level
Usage:
buf := new(bytes.Buffer) h := handler.IOWriterWithMaxLevel(buf, slog.InfoLevel) slog.AddHandler(h) slog.Info("info message")
func NewIOWriter ¶ added in v0.1.2
func NewIOWriter(out io.Writer, levels []slog.Level) *IOWriterHandler
NewIOWriter create a new instance and with limited log levels
func NewIOWriterHandler ¶ added in v0.1.2
func NewIOWriterHandler(out io.Writer, levels []slog.Level) *IOWriterHandler
NewIOWriterHandler create new IOWriterHandler
Usage:
buf := new(bytes.Buffer) h := handler.NewIOWriterHandler(&buf, slog.AllLevels) f, err := os.OpenFile("my.log", ...) h := handler.NewIOWriterHandler(f, slog.AllLevels)
func NewIOWriterWithLF ¶ added in v0.5.3
func NewIOWriterWithLF(out io.Writer, lf slog.LevelFormattable) *IOWriterHandler
NewIOWriterWithLF create new IOWriterHandler, with custom slog.LevelFormattable
func NewSimpleHandler ¶ added in v0.3.0
func NewSimpleHandler(out io.Writer, maxLevel slog.Level) *IOWriterHandler
NewSimpleHandler create new SimpleHandler
Usage:
buf := new(bytes.Buffer) h := handler.NewSimpleHandler(&buf, slog.InfoLevel) f, err := os.OpenFile("my.log", ...) h := handler.NewSimpleHandler(f, slog.InfoLevel)
func SimpleWithLevels ¶ added in v0.5.3
func SimpleWithLevels(out io.Writer, levels []slog.Level) *IOWriterHandler
SimpleWithLevels create new simple handler, with log levels
func (*IOWriterHandler) Handle ¶ added in v0.1.2
func (h *IOWriterHandler) Handle(record *slog.Record) error
Handle log record
func (*IOWriterHandler) TextFormatter ¶ added in v0.5.3
func (h *IOWriterHandler) TextFormatter() *slog.TextFormatter
TextFormatter get the formatter
type LevelWithFormatter
deprecated
added in
v0.0.3
type LevelWithFormatter = slog.LevelWithFormatter
LevelWithFormatter struct definition
- support set log formatter - only support set one log level
Deprecated: please use slog.LevelWithFormatter instead.
type LevelsWithFormatter
deprecated
added in
v0.0.3
type LevelsWithFormatter = slog.LevelsWithFormatter
LevelsWithFormatter struct definition
- support set log formatter - support setting multi log levels
Deprecated: please use slog.LevelsWithFormatter instead.
type LockWrapper ¶ added in v0.3.0
LockWrapper struct
func (*LockWrapper) EnableLock ¶ added in v0.3.0
func (lw *LockWrapper) EnableLock(enable bool)
EnableLock enable lock
func (*LockWrapper) LockEnabled ¶ added in v0.3.0
func (lw *LockWrapper) LockEnabled() bool
LockEnabled status
type NopFlushClose ¶ added in v0.1.1
type NopFlushClose struct{}
NopFlushClose no operation.
provide empty Flush(), Close() methods, useful for tests.
func (*NopFlushClose) Flush ¶ added in v0.1.1
func (h *NopFlushClose) Flush() error
Flush logs to disk
type RotateTime
deprecated
added in
v0.3.0
type RotateTime = rotatefile.RotateTime
RotateTime rotate log file by time.
EveryDay:
- "error.log.20201223"
EveryHour, Every30Minutes, EveryMinute:
- "error.log.20201223_1500"
- "error.log.20201223_1530"
- "error.log.20201223_1523"
Deprecated: please use rotatefile.RotateTime
type SimpleHandler ¶ added in v0.3.0
type SimpleHandler = IOWriterHandler
SimpleHandler definition. alias of IOWriterHandler
func NewHandler ¶ added in v0.3.0
func NewHandler(out io.Writer, maxLevel slog.Level) *SimpleHandler
NewHandler create a new instance
type SyncCloseHandler ¶ added in v0.3.0
type SyncCloseHandler struct { slog.LevelFormattable Output SyncCloseWriter }
SyncCloseHandler definition
func JSONFileHandler ¶
func JSONFileHandler(logfile string, fns ...ConfigFn) (*SyncCloseHandler, error)
JSONFileHandler create new FileHandler with JSON formatter
func MustFileHandler ¶ added in v0.1.0
func MustFileHandler(logfile string, fns ...ConfigFn) *SyncCloseHandler
MustFileHandler create file handler
func MustRotateFile ¶ added in v0.1.1
func MustRotateFile(logfile string, rt rotatefile.RotateTime, fns ...ConfigFn) *SyncCloseHandler
MustRotateFile handler instance, will panic on create error
func MustSimpleFile ¶ added in v0.1.1
func MustSimpleFile(filepath string, maxLv ...slog.Level) *SyncCloseHandler
MustSimpleFile new instance
func MustSizeRotateFile ¶ added in v0.1.1
func MustSizeRotateFile(logfile string, maxSize int, fns ...ConfigFn) *SyncCloseHandler
MustSizeRotateFile instance
func MustTimeRotateFile ¶ added in v0.1.1
func MustTimeRotateFile(logfile string, rt rotatefile.RotateTime, fns ...ConfigFn) *SyncCloseHandler
MustTimeRotateFile instance
func NewBuffFileHandler ¶ added in v0.3.0
func NewBuffFileHandler(logfile string, buffSize int, fns ...ConfigFn) (*SyncCloseHandler, error)
NewBuffFileHandler create file handler with buff size
func NewFileHandler ¶
func NewFileHandler(logfile string, fns ...ConfigFn) (h *SyncCloseHandler, err error)
NewFileHandler create new FileHandler
func NewRotateFile ¶ added in v0.1.1
func NewRotateFile(logfile string, rt rotatefile.RotateTime, fns ...ConfigFn) (*SyncCloseHandler, error)
NewRotateFile instance. alias of NewRotateFileHandler()
func NewRotateFileHandler ¶ added in v0.1.0
func NewRotateFileHandler(logfile string, rt rotatefile.RotateTime, fns ...ConfigFn) (*SyncCloseHandler, error)
NewRotateFileHandler instance. It supports splitting log files by time and size
func NewSimpleFile ¶ added in v0.1.1
func NewSimpleFile(filepath string, maxLv ...slog.Level) (*SyncCloseHandler, error)
NewSimpleFile new instance
func NewSimpleFileHandler ¶ added in v0.1.0
func NewSimpleFileHandler(filePath string, maxLv ...slog.Level) (*SyncCloseHandler, error)
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 NewSizeRotateFile ¶ added in v0.1.1
func NewSizeRotateFile(logfile string, maxSize int, fns ...ConfigFn) (*SyncCloseHandler, error)
NewSizeRotateFile instance
func NewSizeRotateFileHandler ¶ added in v0.1.1
func NewSizeRotateFileHandler(logfile string, maxSize int, fns ...ConfigFn) (*SyncCloseHandler, error)
NewSizeRotateFileHandler instance, default close rotate by time.
func NewSyncCloseHandler ¶ added in v0.3.0
func NewSyncCloseHandler(out SyncCloseWriter, levels []slog.Level) *SyncCloseHandler
NewSyncCloseHandler create new SyncCloseHandler with limited log levels
Usage:
f, err := os.OpenFile("my.log", ...) h := handler.NewSyncCloseHandler(f, slog.AllLevels)
func NewSyncCloser ¶ added in v0.3.0
func NewSyncCloser(out SyncCloseWriter, levels []slog.Level) *SyncCloseHandler
NewSyncCloser create new SyncCloseHandler, alias of NewSyncCloseHandler()
func NewSyncCloserWithLF ¶ added in v0.5.3
func NewSyncCloserWithLF(out SyncCloseWriter, lf slog.LevelFormattable) *SyncCloseHandler
NewSyncCloserWithLF create new SyncCloseHandler, with custom slog.LevelFormattable
func NewTimeRotateFile ¶ added in v0.1.1
func NewTimeRotateFile(logfile string, rt rotatefile.RotateTime, fns ...ConfigFn) (*SyncCloseHandler, error)
NewTimeRotateFile instance
func NewTimeRotateFileHandler ¶ added in v0.1.0
func NewTimeRotateFileHandler(logfile string, rt rotatefile.RotateTime, fns ...ConfigFn) (*SyncCloseHandler, error)
NewTimeRotateFileHandler instance, default close rotate by size
func SyncCloserWithLevels ¶ added in v0.5.3
func SyncCloserWithLevels(out SyncCloseWriter, levels []slog.Level) *SyncCloseHandler
SyncCloserWithLevels create new SyncCloseHandler, alias of NewSyncCloseHandler()
func SyncCloserWithMaxLevel ¶ added in v0.5.3
func SyncCloserWithMaxLevel(out SyncCloseWriter, maxLevel slog.Level) *SyncCloseHandler
SyncCloserWithMaxLevel create new SyncCloseHandler, with max log level
func (*SyncCloseHandler) Close ¶ added in v0.3.0
func (h *SyncCloseHandler) Close() error
Close the handler
func (*SyncCloseHandler) Flush ¶ added in v0.3.0
func (h *SyncCloseHandler) Flush() error
Flush the handler
func (*SyncCloseHandler) Handle ¶ added in v0.3.0
func (h *SyncCloseHandler) Handle(record *slog.Record) error
Handle log record
func (*SyncCloseHandler) Writer ¶ added in v0.3.0
func (h *SyncCloseHandler) Writer() io.Writer
Writer of the handler
type SyncCloseWriter ¶ added in v0.3.0
type SyncCloseWriter interface { Sync() error // WriteCloser the output writer io.WriteCloser }
SyncCloseWriter is the interface satisfied by logging destinations. such as os.File
type SysLogHandler ¶ added in v0.1.0
type SysLogHandler struct { slog.LevelWithFormatter // contains filtered or unexported fields }
SysLogHandler struct
func NewSysLog ¶ added in v0.0.3
func NewSysLog(opt *SysLogOpt) (*SysLogHandler, error)
NewSysLog handler instance with all custom options.
func NewSysLogHandler ¶ added in v0.1.0
func NewSysLogHandler(priority syslog.Priority, tag string) (*SysLogHandler, error)
NewSysLogHandler instance
type SysLogOpt ¶ added in v0.5.5
type SysLogOpt struct { // Tag syslog tag Tag string // Priority syslog priority Priority syslog.Priority // Network syslog network Network string // Raddr syslog address Raddr string }
SysLogOpt for syslog handler
type WriteCloserHandler ¶ added in v0.3.0
type WriteCloserHandler struct { slog.LevelFormattable Output io.WriteCloser }
WriteCloserHandler definition
func NewWriteCloser ¶ added in v0.3.0
func NewWriteCloser(out io.WriteCloser, levels []slog.Level) *WriteCloserHandler
NewWriteCloser create a new instance
func NewWriteCloserHandler ¶ added in v0.5.3
func NewWriteCloserHandler(out io.WriteCloser, levels []slog.Level) *WriteCloserHandler
NewWriteCloserHandler create new WriteCloserHandler
Usage:
buf := new(bytes.Buffer) h := handler.NewIOWriteCloserHandler(&buf, slog.AllLevels) f, err := os.OpenFile("my.log", ...) h := handler.NewIOWriteCloserHandler(f, slog.AllLevels)
func NewWriteCloserWithLF ¶ added in v0.5.3
func NewWriteCloserWithLF(out io.WriteCloser, lf slog.LevelFormattable) *WriteCloserHandler
NewWriteCloserWithLF create new WriteCloserHandler and with custom slog.LevelFormattable
func WriteCloserWithLevels ¶ added in v0.5.3
func WriteCloserWithLevels(out io.WriteCloser, levels []slog.Level) *WriteCloserHandler
WriteCloserWithLevels create a new instance and with limited log levels
func WriteCloserWithMaxLevel ¶ added in v0.5.3
func WriteCloserWithMaxLevel(out io.WriteCloser, maxLevel slog.Level) *WriteCloserHandler
WriteCloserWithMaxLevel create new WriteCloserHandler and with max log level
func (*WriteCloserHandler) Close ¶ added in v0.3.0
func (h *WriteCloserHandler) Close() error
Close the handler
func (*WriteCloserHandler) Flush ¶ added in v0.3.0
func (h *WriteCloserHandler) Flush() error
Flush the handler