func ParseLogLevelParamV2()

in registry/storage/driver/s3-aws/common/parser.go [288:351]


func ParseLogLevelParamV2(logger dcontext.Logger, param any) v2_aws.ClientLogMode {
	if param == nil {
		logger.Debugf("S3 logging level is not set, defaulting to %q", LogLevelOff)
		// aws sdk v2 does not have a constant for this:
		return v2_aws.ClientLogMode(0)
	}

	if ll, ok := param.(v2_aws.ClientLogMode); ok {
		return ll
	}

	var res v2_aws.ClientLogMode
	var logLevelsSet []string

	for _, v := range strings.Split(strings.ToLower(param.(string)), ",") {
		switch v {
		// LogLevelOff in the list of loglevels overrides all other log levels
		// and disables logging
		case LogLevelOff:
			logger.Debugf("S3 logging level set to %q", LogLevelOff)
			// aws sdk v2 does not have a constant for this:
			return v2_aws.ClientLogMode(0)
		case LogSigning:
			res |= v2_aws.LogSigning
			logLevelsSet = append(logLevelsSet, LogSigning)
		case LogRetries:
			res |= v2_aws.LogRetries
			logLevelsSet = append(logLevelsSet, LogRetries)
		case LogRequest:
			res |= v2_aws.LogRequest
			logLevelsSet = append(logLevelsSet, LogRequest)
		case LogRequestWithBody:
			res |= v2_aws.LogRequestWithBody
			logLevelsSet = append(logLevelsSet, LogRequestWithBody)
		case LogResponse:
			res |= v2_aws.LogResponse
			logLevelsSet = append(logLevelsSet, LogResponse)
		case LogResponseWithBody:
			res |= v2_aws.LogResponseWithBody
			logLevelsSet = append(logLevelsSet, LogResponseWithBody)
		case LogDeprecatedUsage:
			res |= v2_aws.LogDeprecatedUsage
			logLevelsSet = append(logLevelsSet, LogDeprecatedUsage)
		case LogRequestEventMessage:
			res |= v2_aws.LogRequestEventMessage
			logLevelsSet = append(logLevelsSet, LogRequestEventMessage)
		case LogResponseEventMessage:
			res |= v2_aws.LogResponseEventMessage
			logLevelsSet = append(logLevelsSet, LogResponseEventMessage)
		// Check for v1 log levels that shouldn't be used with v2
		case LogLevelDebug, LogLevelDebugWithSigning, LogLevelDebugWithHTTPBody,
			LogLevelDebugWithRequestRetries, LogLevelDebugWithRequestErrors,
			LogLevelDebugWithEventStreamBody:
			logger.Warnf("S3 driver v1 log level %q has been passed to S3 driver v2. Ignoring. Please adjust your configuration", v)
		default:
			logger.Warnf("unknown loglevel %q, S3 logging level set to %q", param, LogLevelOff)
			return v2_aws.ClientLogMode(0)
		}
	}

	logger.Infof("S3 logging level set to %q", strings.Join(logLevelsSet, ","))

	return res
}