package flume // An CoreOption configures a Core. type CoreOption interface { apply(*Core) } // coreOptionFunc wraps a func so it satisfies the CoreOption interface. type coreOptionFunc func(*Core) func (f coreOptionFunc) apply(c *Core) { f(c) } // AddCallerSkip increases the number of callers skipped by caller annotation // (as enabled by the AddCaller option). When building wrappers around a // Core, supplying this CoreOption prevents Core from always // reporting the wrapper code as the caller. func AddCallerSkip(skip int) CoreOption { return coreOptionFunc(func(c *Core) { c.callerSkip += skip }) } // AddHooks adds hooks to this logger core. These will only execute on this // logger, after the global hooks. func AddHooks(hooks ...HookFunc) CoreOption { return coreOptionFunc(func(core *Core) { core.hooks = append(core.hooks, hooks...) }) }