func ConfigureWithCoreLocal()

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
}