code: func GetLoggerWithFields(ctx context.Context, fields map[interface{}]interface{}, keys ...interface{}) Logger {
  	// must convert from interface{} -> interface{} to string -> interface{} for logrus.
  	lfields := make(logrus.Fields, len(fields))
  	for key, value := range fields {
  		lfields[fmt.Sprint(key)] = value
  	}
  
  	return getLogrusLogger(ctx, keys...).WithFields(lfields)
  }
docs: // GetLoggerWithFields returns a logger instance with the specified fields
  // without affecting the context. Extra specified keys will be resolved from
  // the context.