71 lines
1.3 KiB
Go
71 lines
1.3 KiB
Go
|
package log
|
||
|
|
||
|
import "time"
|
||
|
|
||
|
// Option used by the logger
|
||
|
type Option func(*Options)
|
||
|
|
||
|
// Options are logger options
|
||
|
type Options struct {
|
||
|
// Name of the log
|
||
|
Name string
|
||
|
// Size is the size of ring buffer
|
||
|
Size int
|
||
|
// Format specifies the output format
|
||
|
Format FormatFunc
|
||
|
}
|
||
|
|
||
|
// Name of the log
|
||
|
func Name(n string) Option {
|
||
|
return func(o *Options) {
|
||
|
o.Name = n
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Size sets the size of the ring buffer
|
||
|
func Size(s int) Option {
|
||
|
return func(o *Options) {
|
||
|
o.Size = s
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func Format(f FormatFunc) Option {
|
||
|
return func(o *Options) {
|
||
|
o.Format = f
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// DefaultOptions returns default options
|
||
|
func DefaultOptions() Options {
|
||
|
return Options{
|
||
|
Size: DefaultSize,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// ReadOptions for querying the logs
|
||
|
type ReadOptions struct {
|
||
|
// Since what time in past to return the logs
|
||
|
Since time.Time
|
||
|
// Count specifies number of logs to return
|
||
|
Count int
|
||
|
// Stream requests continuous log stream
|
||
|
Stream bool
|
||
|
}
|
||
|
|
||
|
// ReadOption used for reading the logs
|
||
|
type ReadOption func(*ReadOptions)
|
||
|
|
||
|
// Since sets the time since which to return the log records
|
||
|
func Since(s time.Time) ReadOption {
|
||
|
return func(o *ReadOptions) {
|
||
|
o.Since = s
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Count sets the number of log records to return
|
||
|
func Count(c int) ReadOption {
|
||
|
return func(o *ReadOptions) {
|
||
|
o.Count = c
|
||
|
}
|
||
|
}
|