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 Manager
- type Option
- func WithAsynchronous() Option
- func WithBuffer() Option
- func WithBufferThershould(n int) Option
- func WithCompress() 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 1M buffer will be allocate BufferSize = 0x100000 // 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") )
Functions ¶
func AsynchronousWriterErrorChan ¶ added in v1.0.1
func AsynchronousWriterErrorChan(wr RollingWriter) (chan error, error)
AsynchronousWriterErrorChan return the error channel for asyn writer
func LogFilePath ¶ added in v1.0.1
LogFilePath return the absolute path on log file
Types ¶
type AsynchronousWriter ¶ added in v1.0.1
type AsynchronousWriter struct { Writer // contains filtered or unexported fields }
AsynchronousWriter provide a asynchronous writer with the writer to confirm the write
func (*AsynchronousWriter) Close ¶ added in v1.0.1
func (w *AsynchronousWriter) Close() error
Close set closed and close the file once
type BufferWriter ¶ added in v1.0.1
type BufferWriter struct { Writer // contains filtered or unexported fields }
BufferWriter merge some write operations into one.
func (*BufferWriter) Close ¶ added in v1.1.1
func (w *BufferWriter) Close() error
Close bufferWriter flush all buffered write then close file
type Config ¶ added in v1.0.1
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].log // // 2. the tuncated log file // the tuncated log file is backup here: // [LogPath]/[FileName].log.[TimeTag] // if compressed true // [LogPath]/[FileName].log.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"` // 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
func NewDefaultConfig ¶ added in v1.0.1
func NewDefaultConfig() Config
NewDefaultConfig return the default config
type LockedWriter ¶ added in v1.0.1
LockedWriter provide a synchronous writer with lock write operate will be guaranteed by lock
func (*LockedWriter) Close ¶ added in v1.0.1
func (w *LockedWriter) Close() error
Close lock and close the file
type Locker ¶ added in v1.1.3
type Locker struct {
// contains filtered or unexported fields
}
Locker is a spinlock implementation.
A Locker must not be copied after first use.
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 ¶ added in v1.0.1
NewManager generate the Manager with config
type Option ¶
type Option func(*Config)
Option defined config option
func WithAsynchronous ¶ added in v1.0.1
func WithAsynchronous() Option
WithAsynchronous enable the asynchronous write for writer
func WithBuffer ¶ added in v1.1.1
func WithBuffer() Option
WithBuffer will enable the buffer writer mode
func WithBufferThershould ¶ added in v1.1.1
WithBufferThershould set buffer write thershould
func WithCompress ¶
func WithCompress() Option
WithCompress will auto compress the tuncated log file with gzip
func WithFileName ¶ added in v1.0.1
WithFileName set the log file name
func WithLock ¶ added in v1.0.1
func WithLock() Option
WithLock will enable the lock in writer Writer will call write with the Lock to guarantee the parallel safe
func WithLogPath ¶ added in v1.0.1
WithLogPath set the log dir and auto create dir tree if the dir/path is not exist
func WithMaxRemain ¶ added in v1.0.1
WithMaxRemain enable the auto deletion for old file when exceed the given max value Bydefault -1 will disable the auto deletion
func WithRollingTimePattern ¶ added in v1.0.1
WithRollingTimePattern set the time rolling policy time pattern obey the Corn table style visit http://crontab.org/ for details
func WithRollingVolumeSize ¶ added in v1.0.1
WithRollingVolumeSize set the rolling file truncation threshold size
func WithTimeTagFormat ¶ added in v1.0.1
WithTimeTagFormat set the TimeTag format string
func WithoutRollingPolicy ¶ added in v1.1.2
func WithoutRollingPolicy() Option
WithoutRolling set no rolling policy
type RollingWriter ¶ added in v1.0.1
RollingWriter implement the io writer
func NewWriter ¶ added in v1.0.1
func NewWriter(ops ...Option) (RollingWriter, error)
NewWriter generate the rollingWriter with given option
func NewWriterFromConfig ¶ added in v1.0.1
func NewWriterFromConfig(c *Config) (RollingWriter, error)
NewWriterFromConfig generate the rollingWriter with given config
func NewWriterFromConfigFile ¶ added in v1.0.1
func NewWriterFromConfigFile(path string) (RollingWriter, error)
NewWriterFromConfigFile generate the rollingWriter with given config file
type Writer ¶ added in v1.0.1
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 ¶ added in v1.0.1
CompressFile compress log file write into .gz
func (*Writer) DoRemove ¶ added in v1.1.1
func (w *Writer) DoRemove()
DoRemove will delete the oldest file