Documentation ¶
Index ¶
- Constants
- Variables
- func AsynchronousWriterErrorChan(wr RollingWriter) (chan error, error)
- func LogFilePath(c *Config) (filepath string)
- type AsynchronousWriter
- type BufferWriter
- type Config
- type LockedWriter
- type Locker
- type LogFileFormatter
- type Manager
- type Option
- func WithAsynchronous() Option
- func WithBuffer() Option
- func WithBufferThershould(n int) Option
- func WithCompress() Option
- func WithFileExtension(ext string) Option
- func WithFileFormatter(formatter LogFileFormatter) Option
- func WithFileName(name string) Option
- func WithLock() Option
- func WithLogPath(path string) Option
- func WithMaxRemain(max int) Option
- func WithRollingTimePattern(pattern string) Option
- func WithRollingVolumeSize(size string) Option
- func WithTimeTagFormat(format string) Option
- func WithoutRollingPolicy() Option
- type RollingWriter
- type Writer
Constants ¶
const ( WithoutRolling = iota TimeRolling VolumeRolling )
RollingPolicies giveout 3 policy for rolling.
Variables ¶
var ( // BufferSize defined the buffer size, by default 1 KB buffer will be allocated BufferSize = 1024 // QueueSize defined the queue size for asynchronize write QueueSize = 1024 // Precision defined the precision about the reopen operation condition // check duration within second Precision = 1 // DefaultFileMode set the default open mode rw-r--r-- by default DefaultFileMode = os.FileMode(0644) // DefaultFileFlag set the default file flag DefaultFileFlag = os.O_RDWR | os.O_CREATE | os.O_APPEND // ErrInternal defined the internal error ErrInternal = errors.New("error internal") // ErrClosed defined write while ctx close ErrClosed = errors.New("error write on close") // ErrInvalidArgument defined the invalid argument ErrInvalidArgument = errors.New("error argument invalid") // ErrQueueFull defined the queue full ErrQueueFull = errors.New("async log queue full") )
Functions ¶
func AsynchronousWriterErrorChan ¶
func AsynchronousWriterErrorChan(wr RollingWriter) (chan error, error)
AsynchronousWriterErrorChan return the error channel for asyn writer
func LogFilePath ¶
LogFilePath return the absolute path on log file
Types ¶
type AsynchronousWriter ¶
type AsynchronousWriter struct { Writer // contains filtered or unexported fields }
AsynchronousWriter provide a asynchronous writer with the writer to confirm the write
func (*AsynchronousWriter) Close ¶
func (w *AsynchronousWriter) Close() error
Close set closed and close the file once
type BufferWriter ¶
type BufferWriter struct { Writer // contains filtered or unexported fields }
BufferWriter merge some write operations into one.
func (*BufferWriter) Close ¶
func (w *BufferWriter) Close() error
Close bufferWriter flush all buffered write then close file
type Config ¶
type Config struct { // LogPath defined the full path of log file directory. // there comes out 2 different log file: // // 1. the current log // log file path is located here: // [LogPath]/[FileName].[FileExtension] // // 2. the tuncated log file // the tuncated log file is backup here: // [LogPath]/[FileName].[FileExtension].[TimeTag] // if compressed true // [LogPath]/[FileName].[FileExtension].gz.[TimeTag] // // NOTICE: blank field will be ignored // By default we using '-' as separator, you can set it yourself TimeTagFormat string `json:"time_tag_format"` LogPath string `json:"log_path"` FileName string `json:"file_name"` // FileExtension defines the log file extension. By default, it's 'log' FileExtension string `json:"file_extension"` // FileFormatter log file path formatter for the file start write // By default, append '.gz' suffix when Compress is true FileFormatter LogFileFormatter `json:"-"` // MaxRemain will auto clear the roling file list, set 0 will disable auto clean MaxRemain int `json:"max_remain"` // RollingPolicy give out the rolling policy // We got 3 policies(actually, 2): // // 1. WithoutRolling: no rolling will happen // 2. TimeRolling: rolling by time // 3. VolumeRolling: rolling by file size RollingPolicy int `json:"rolling_ploicy"` RollingTimePattern string `json:"rolling_time_pattern"` RollingVolumeSize string `json:"rolling_volume_size"` // WriterMode in 4 modes below // 1. none 2. lock // 3. async 4. buffer WriterMode string `json:"writer_mode"` // BufferWriterThershould in Byte BufferWriterThershould int `json:"buffer_thershould"` // Compress will compress log file with gzip Compress bool `json:"compress"` // FilterEmptyBackup will not backup empty file if you set it true FilterEmptyBackup bool `json:"filter_empty_backup"` }
Config give out the config for manager
type LockedWriter ¶
LockedWriter provide a synchronous writer with lock write operate will be guaranteed by lock
type Locker ¶
type Locker struct {
// contains filtered or unexported fields
}
Locker is a spinlock implementation.
A Locker must not be copied after first use.
type LogFileFormatter ¶
LogFileFormatter log file format function
type Manager ¶
type Manager interface { // Fire will return a string channel // while the rolling event occoured, new file name will generate Fire() chan string // Close the Manager Close() }
Manager used to trigger rolling event.
func NewManager ¶
NewManager generate the Manager with config
type Option ¶
type Option func(*Config)
Option defined config option
func WithAsynchronous ¶
func WithAsynchronous() Option
WithAsynchronous enable the asynchronous write for writer
func WithBufferThershould ¶
WithBufferThershould set buffer write thershould
func WithCompress ¶
func WithCompress() Option
WithCompress will auto compress the tuncated log file with gzip
func WithFileExtension ¶
WithFileExtension set the log file extension
func WithFileFormatter ¶
func WithFileFormatter(formatter LogFileFormatter) Option
WithFileFormatter set the log file formatter
func WithLock ¶
func WithLock() Option
WithLock will enable the lock in writer Writer will call write with the Lock to guarantee the parallel safe
func WithLogPath ¶
WithLogPath set the log dir and auto create dir tree if the dir/path is not exist
func WithMaxRemain ¶
WithMaxRemain enable the auto deletion for old file when exceed the given max value Bydefault -1 will disable the auto deletion
func WithRollingTimePattern ¶
WithRollingTimePattern set the time rolling policy time pattern obey the Corn table style visit http://crontab.org/ for details
func WithRollingVolumeSize ¶
WithRollingVolumeSize set the rolling file truncation threshold size
func WithTimeTagFormat ¶
WithTimeTagFormat set the TimeTag format string
type RollingWriter ¶
RollingWriter implement the io writer
func NewWriter ¶
func NewWriter(ops ...Option) (RollingWriter, error)
NewWriter generate the rollingWriter with given option
func NewWriterFromConfig ¶
func NewWriterFromConfig(c *Config) (RollingWriter, error)
NewWriterFromConfig generate the rollingWriter with given config
func NewWriterFromConfigFile ¶
func NewWriterFromConfigFile(path string) (RollingWriter, error)
NewWriterFromConfigFile generate the rollingWriter with given config file
type Writer ¶
type Writer struct {
// contains filtered or unexported fields
}
Writer provide a synchronous file writer if Lock is set true, write will be guaranteed by lock
func (*Writer) CompressFile ¶
CompressFile compress log file write into .gz