in logp/core.go [211:255]
func ConfigureWithCoreLocal(loggerCfg Config, core zapcore.Core) (*Logger, error) {
var (
sink zapcore.Core
level zap.AtomicLevel
)
level = zap.NewAtomicLevelAt(loggerCfg.Level.ZapLevel())
if loggerCfg.WithFields != nil {
fields := make([]zapcore.Field, 0, len(loggerCfg.WithFields))
for key, value := range loggerCfg.WithFields {
fields = append(fields, zap.Any(key, value))
}
core = core.With(fields)
}
sink = wrappedCore(core)
// Enabled selectors when debug is enabled.
selectors := make(map[string]struct{}, len(loggerCfg.Selectors))
if loggerCfg.Level.Enabled(DebugLevel) && len(loggerCfg.Selectors) > 0 {
for _, sel := range loggerCfg.Selectors {
selectors[strings.TrimSpace(sel)] = struct{}{}
}
// Default to all enabled if no selectors are specified.
if len(selectors) == 0 {
selectors["*"] = struct{}{}
}
sink = selectiveWrapper(sink, selectors)
}
root := zap.New(sink, makeOptions(loggerCfg)...)
// TODO: Remove this when there is no more global logger dependency
storeLogger(&coreLogger{
selectors: selectors,
rootLogger: root,
globalLogger: root.WithOptions(zap.AddCallerSkip(1)),
logger: newLogger(root, ""),
level: level,
observedLogs: nil,
})
return newLogger(root, ""), nil
}