Select Git revision
environments.proto
config.go 1.29 KiB
package zap
import (
"time"
)
const (
defaultMaxBufferSize = 1000
defaultMaxSyncQueueSize = 16
defaultFlushInterval = 5 * time.Second
)
type config struct {
flushInterval time.Duration
maxBufferSize int
maxSyncQueueSize int
}
func newConfig(options []Option) *config {
cfg := new(config)
for _, option := range options {
option(cfg)
}
if cfg.flushInterval == 0 {
cfg.flushInterval = defaultFlushInterval
}
if cfg.maxBufferSize == 0 {
cfg.maxBufferSize = defaultMaxBufferSize
}
if cfg.maxSyncQueueSize == 0 {
cfg.maxSyncQueueSize = defaultMaxSyncQueueSize
}
return cfg
}
type Option func(config *config)
// WithFlushInterval устанавливает значение для BufferedWriteSyncer.FlushInterval
func WithFlushInterval(interval time.Duration) Option {
return func(config *config) {
config.flushInterval = interval
}
}
// WithMaxBufferSize устанавливает значение для BufferedWriteSyncer.MaxBufferSize
func WithMaxBufferSize(size int) Option {
return func(config *config) {
config.maxBufferSize = size
}
}
// WithMaxSyncQueueSize устанавливает значение для BufferedWriteSyncer.MaxSyncQueueSize
func WithMaxSyncQueueSize(size int) Option {
return func(config *config) {
config.maxSyncQueueSize = size
}
}