90 lines
2.6 KiB
Go
90 lines
2.6 KiB
Go
|
package rotatelogs
|
||
|
|
||
|
import (
|
||
|
"time"
|
||
|
|
||
|
"github.com/lestrrat-go/file-rotatelogs/internal/option"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
optkeyClock = "clock"
|
||
|
optkeyHandler = "handler"
|
||
|
optkeyLinkName = "link-name"
|
||
|
optkeyMaxAge = "max-age"
|
||
|
optkeyRotationTime = "rotation-time"
|
||
|
optkeyRotationSize = "rotation-size"
|
||
|
optkeyRotationCount = "rotation-count"
|
||
|
optkeyForceNewFile = "force-new-file"
|
||
|
)
|
||
|
|
||
|
// WithClock creates a new Option that sets a clock
|
||
|
// that the RotateLogs object will use to determine
|
||
|
// the current time.
|
||
|
//
|
||
|
// By default rotatelogs.Local, which returns the
|
||
|
// current time in the local time zone, is used. If you
|
||
|
// would rather use UTC, use rotatelogs.UTC as the argument
|
||
|
// to this option, and pass it to the constructor.
|
||
|
func WithClock(c Clock) Option {
|
||
|
return option.New(optkeyClock, c)
|
||
|
}
|
||
|
|
||
|
// WithLocation creates a new Option that sets up a
|
||
|
// "Clock" interface that the RotateLogs object will use
|
||
|
// to determine the current time.
|
||
|
//
|
||
|
// This optin works by always returning the in the given
|
||
|
// location.
|
||
|
func WithLocation(loc *time.Location) Option {
|
||
|
return option.New(optkeyClock, clockFn(func() time.Time {
|
||
|
return time.Now().In(loc)
|
||
|
}))
|
||
|
}
|
||
|
|
||
|
// WithLinkName creates a new Option that sets the
|
||
|
// symbolic link name that gets linked to the current
|
||
|
// file name being used.
|
||
|
func WithLinkName(s string) Option {
|
||
|
return option.New(optkeyLinkName, s)
|
||
|
}
|
||
|
|
||
|
// WithMaxAge creates a new Option that sets the
|
||
|
// max age of a log file before it gets purged from
|
||
|
// the file system.
|
||
|
func WithMaxAge(d time.Duration) Option {
|
||
|
return option.New(optkeyMaxAge, d)
|
||
|
}
|
||
|
|
||
|
// WithRotationTime creates a new Option that sets the
|
||
|
// time between rotation.
|
||
|
func WithRotationTime(d time.Duration) Option {
|
||
|
return option.New(optkeyRotationTime, d)
|
||
|
}
|
||
|
|
||
|
// WithRotationSize creates a new Option that sets the
|
||
|
// log file size between rotation.
|
||
|
func WithRotationSize(s int64) Option {
|
||
|
return option.New(optkeyRotationSize, s)
|
||
|
}
|
||
|
|
||
|
// WithRotationCount creates a new Option that sets the
|
||
|
// number of files should be kept before it gets
|
||
|
// purged from the file system.
|
||
|
func WithRotationCount(n uint) Option {
|
||
|
return option.New(optkeyRotationCount, n)
|
||
|
}
|
||
|
|
||
|
// WithHandler creates a new Option that specifies the
|
||
|
// Handler object that gets invoked when an event occurs.
|
||
|
// Currently `FileRotated` event is supported
|
||
|
func WithHandler(h Handler) Option {
|
||
|
return option.New(optkeyHandler, h)
|
||
|
}
|
||
|
|
||
|
// ForceNewFile ensures a new file is created every time New()
|
||
|
// is called. If the base file name already exists, an implicit
|
||
|
// rotation is performed
|
||
|
func ForceNewFile() Option {
|
||
|
return option.New(optkeyForceNewFile, true)
|
||
|
}
|