base.go
func NewBase(configs ...baseConfigFunc) *Base {
	b := &Base{
		clock: glock.NewRealClock(),

		config:    NewConfig(),
		logLevel:  LevelDebug,
		sequence:  0,
		BaseAttrs: NewAttrs(),

		loggers:      make([]Logger, 0),
		hookPreQueue: make([]HookPreQueue, 0),
	}

	for _, f := range configs {
		f(b)
	}

	return b
}
func NewBase(configs ...baseConfigFunc) *Base {
	b := &Base{
		clock: glock.NewRealClock(),

		config:    NewConfig(),
		logLevel:  LevelDebug,
		sequence:  0,
		BaseAttrs: NewAttrs(),

		loggers:      make([]Logger, 0),
		hookPreQueue: make([]HookPreQueue, 0),
	}

	for _, f := range configs {
		f(b)
	}

	return b
}
// NewBase creates a new instance of Base with default values set.