mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-31 04:02:26 -05:00 
			
		
		
		
	* start moving to bun * changing more stuff * more * and yet more * tests passing * seems stable now * more big changes * small fix * little fixes
		
			
				
	
	
		
			98 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package pgx
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| 	"encoding/hex"
 | |
| 	"errors"
 | |
| 	"fmt"
 | |
| )
 | |
| 
 | |
| // The values for log levels are chosen such that the zero value means that no
 | |
| // log level was specified.
 | |
| const (
 | |
| 	LogLevelTrace = 6
 | |
| 	LogLevelDebug = 5
 | |
| 	LogLevelInfo  = 4
 | |
| 	LogLevelWarn  = 3
 | |
| 	LogLevelError = 2
 | |
| 	LogLevelNone  = 1
 | |
| )
 | |
| 
 | |
| // LogLevel represents the pgx logging level. See LogLevel* constants for
 | |
| // possible values.
 | |
| type LogLevel int
 | |
| 
 | |
| func (ll LogLevel) String() string {
 | |
| 	switch ll {
 | |
| 	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", ll)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // Logger is the interface used to get logging from pgx internals.
 | |
| type Logger interface {
 | |
| 	// 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 LogLevelFromString(s string) (LogLevel, error) {
 | |
| 	switch s {
 | |
| 	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 logQueryArgs(args []interface{}) []interface{} {
 | |
| 	logArgs := make([]interface{}, 0, len(args))
 | |
| 
 | |
| 	for _, a := range args {
 | |
| 		switch v := a.(type) {
 | |
| 		case []byte:
 | |
| 			if len(v) < 64 {
 | |
| 				a = hex.EncodeToString(v)
 | |
| 			} else {
 | |
| 				a = fmt.Sprintf("%x (truncated %d bytes)", v[:64], len(v)-64)
 | |
| 			}
 | |
| 		case string:
 | |
| 			if len(v) > 64 {
 | |
| 				a = fmt.Sprintf("%s (truncated %d bytes)", v[:64], len(v)-64)
 | |
| 			}
 | |
| 		}
 | |
| 		logArgs = append(logArgs, a)
 | |
| 	}
 | |
| 
 | |
| 	return logArgs
 | |
| }
 |