Documentation ¶
Index ¶
- Constants
- Variables
- func AsynchronousWriterErrorChan(wr RollingWriter) (chan error, error)
- func LogFilePath(c *Config) string
- type AsynchronousWriter
- type BufferWriter
- type Config
- type LockedWriter
- type Manager
- type Option
- func WithAsynchronous() Option
- func WithCompress() Option
- func WithFileName(name string) Option
- func WithLock() Option
- func WithLogPath(path string) Option
- func WithMaxRemain(max int) Option
- func WithRollingPolicy(policy int) Option
- func WithRollingTimePattern(pattern string) Option
- func WithRollingVolumeSize(size string) Option
- func WithTimeTagFormat(format string) 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 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 lock and close the file
type BufferWriter ¶ added in v1.0.1
type BufferWriter struct { Writer // contains filtered or unexported fields }
BufferWriter provide a parallel safe bufferd writer TODO TBD
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 I use '-' 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"` // Compress will compress log file with gzip Compress bool `json:"compress"` // Asynchronous enable the asynchronous write // by default the writer will be synchronous Asynchronous bool `json:"asynchronous"` // Lock enable the lock for writer, the writer will guarantee parallel safity // NOTICE: this will take effect only when writer is synchronous Lock bool `json:"lock"` }
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
type LockedWriter struct { Writer // contains filtered or unexported fields }
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 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 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 WithRollingPolicy ¶ added in v1.0.1
WithRollingPolicy set the rolling policy
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
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) AutoRemove ¶ added in v1.0.1
func (w *Writer) AutoRemove()
AutoRemove will delete the oldest file
func (*Writer) CompressFile ¶ added in v1.0.1
CompressFile compress log file write into .gz and remove source file