feat(logging): order log fields for improved readability

This commit is contained in:
hkfires
2026-01-15 10:44:54 +08:00
parent 847be0e99d
commit 1fbbba6f59
3 changed files with 21 additions and 19 deletions

View File

@@ -6,7 +6,6 @@ import (
"io"
"os"
"path/filepath"
"sort"
"strings"
"sync"
@@ -30,6 +29,9 @@ var (
// Format: [2025-12-23 20:14:04] [debug] [manager.go:524] | a1b2c3d4 | Use API key sk-9...0RHO for model gpt-5.2
type LogFormatter struct{}
// logFieldOrder defines the display order for common log fields.
var logFieldOrder = []string{"provider", "model", "mode", "budget", "level", "original_value", "min", "max", "clamped_to", "error"}
// Format renders a single log entry with custom formatting.
func (m *LogFormatter) Format(entry *log.Entry) ([]byte, error) {
var buffer *bytes.Buffer
@@ -56,17 +58,19 @@ func (m *LogFormatter) Format(entry *log.Entry) ([]byte, error) {
// Build fields string (excluding request_id which is already shown)
var fieldsStr string
if len(entry.Data) > 0 {
var keys []string
for k := range entry.Data {
if k == "request_id" {
seen := make(map[string]bool)
var fields []string
for _, k := range logFieldOrder {
if v, ok := entry.Data[k]; ok {
fields = append(fields, fmt.Sprintf("%s=%v", k, v))
seen[k] = true
}
}
for k, v := range entry.Data {
if k == "request_id" || seen[k] {
continue
}
keys = append(keys, k)
}
sort.Strings(keys)
var fields []string
for _, k := range keys {
fields = append(fields, fmt.Sprintf("%s=%v", k, entry.Data[k]))
fields = append(fields, fmt.Sprintf("%s=%v", k, v))
}
if len(fields) > 0 {
fieldsStr = " " + strings.Join(fields, " ")