code: func (lr *logRegistry) NewLogger(name string) logging.Logger {
  	if existingLogger := lr.getLoggerFromMapping(name); existingLogger != nil {
  		panic(fmt.Errorf("logger with name '%s' already exists", name))
  	}
  	if err := checkLoggerName(name); err != nil {
  		panic(err)
  	}
  
  	logger := NewLogger(name)
  
  	// set initial logger level
  	if lvl, ok := lr.logLevels[name]; ok {
  		setLevel(logger, lvl)
  	} else {
  		setLevel(logger, lr.defaultLevel)
  	}
  
  	lr.putLoggerToMapping(logger)
  
  	// add all defined hooks
  	for _, hook := range lr.hooks {
  		logger.std.AddHook(hook)
  	}
  
  	return logger
  }
docs: // NewLogger creates new named Logger instance. Name can be subsequently used to
  // refer the logger in registry.