code: func LoggerWContext(ctx context.Context, args ...interface{}) log.Logger {
  	if l := ctx.Value(LoggerKey); l == nil {
  		ctx = LoggerNewContext(ctx)
  	}
  
  	logger := loggerFromContext(ctx)
  
  	loggerArgs := []interface{}{ProcessPidKey, logger.processPid}
  	if requestUuid := ctx.Value(RequestUuidKey); requestUuid != nil {
  		args = append(args, RequestUuidKey, requestUuid)
  	}
  
  	args = append(loggerArgs, args...)
  
  	iter := ctx.Value(AdditionnalLogElementsKey).(*ordered_map.OrderedMap).IterFunc()
  	for kv, ok := iter(); ok; kv, ok = iter() {
  		args = append(args, kv.Key, kv.Value)
  	}
  
  	return logger.logger.New(args...)
  }
docs: // Get a logger initialized with the values from the context (pid, request id and additionnal elements)