package pgx

import (
	
	
	
	
)
The values for log levels are chosen such that the zero value means that no log level was specified.
LogLevel represents the pgx logging level. See LogLevel* constants for possible values.
type LogLevel int

func ( LogLevel) () string {
	switch  {
	case LogLevelTrace:
		return "trace"
	case LogLevelDebug:
		return "debug"
	case LogLevelInfo:
		return "info"
	case LogLevelWarn:
		return "warn"
	case LogLevelError:
		return "error"
	case LogLevelNone:
		return "none"
	default:
		return fmt.Sprintf("invalid level %d", )
	}
}
Logger is the interface used to get logging from pgx internals.
Log a message at the given level with data key/value pairs. data may be nil.
	Log(ctx context.Context, level LogLevel, msg string, data map[string]interface{})
}
LogLevelFromString converts log level string to constant Valid levels: trace debug info warn error none
func ( string) (LogLevel, error) {
	switch  {
	case "trace":
		return LogLevelTrace, nil
	case "debug":
		return LogLevelDebug, nil
	case "info":
		return LogLevelInfo, nil
	case "warn":
		return LogLevelWarn, nil
	case "error":
		return LogLevelError, nil
	case "none":
		return LogLevelNone, nil
	default:
		return 0, errors.New("invalid log level")
	}
}

func ( []interface{}) []interface{} {
	 := make([]interface{}, 0, len())

	for ,  := range  {
		switch v := .(type) {
		case []byte:
			if len() < 64 {
				 = hex.EncodeToString()
			} else {
				 = fmt.Sprintf("%x (truncated %d bytes)", [:64], len()-64)
			}
		case string:
			if len() > 64 {
				 = fmt.Sprintf("%s (truncated %d bytes)", [:64], len()-64)
			}
		}
		 = append(, )
	}

	return