Terminal control characters are not always escaped safely
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 35/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- go
- Ambito
- observability-sre
Direzione di ricerca
Inizia con la riproduzione Go in main.go ed esegui i quattro casi di logging di sloghuman per confrontare come vengono visualizzati il messaggio e i valori dei campi. Traccia il percorso di formattazione e escaping dell'output; il lavoro è completato quando i ritorni a capo isolati, i caratteri campanello e gli altri caratteri di controllo del terminale non possono essere interpretati, mentre la presentazione CRLF allineata prevista continua a essere compresa.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Not sure whether or not this is considered a feature or a bug, but in certain scenarios, terminal escape chars are interpreted as-is, and in other they're escaped into string form.
package main
import (
"context"
"os"
"cdr.dev/slog"
"cdr.dev/slog/sloggers/sloghuman"
)
func main() {
ctx := context.Background()
log := slog.Make(sloghuman.Sink(os.Stderr))
log.Info(ctx, "test1\r\nw\reird\a")
log.Info(ctx, "test2", slog.F("boop", "hello\r\nb\rell\a"))
log.Info(ctx, "test3\r\nt\rest", slog.F("boop", "hello\r\nb\rell\a"))
log.Info(ctx, "test4", slog.F("clipboard", "\033]52;c;surprise!\a"))
}
// Output:
2022-11-10 18:10:11.256 [INFO] <main.go:18> main ...
"msg": test1
eird w
2022-11-10 18:10:11.256 [INFO] <main.go:19> main test2 ...
"boop": hello
ell b
2022-11-10 18:10:11.256 [INFO] <main.go:20> main ... {"boop": "hello\r\nb\rell\u0007"}
"msg": test3
est t
2022-11-10 18:10:11.257 [INFO] <main.go:21> main test4 {"clipboard": "\u001b]52;c;surprise!\u0007"}
Pretty printing \r\n seems intended and like a nice feature (since it's aligned), but stray \r and also \a are interpreted as-is. The latter (\a) will also ring the terminal bell which I would venture is never the expectation.
Out of these 4 cases, only the clipboard case behaved as I would expect.
- Lingua principale
- Go
- Stelle
- 351
- Fork
- 23
- Merge medio
- 7g 23h
- PR unite (30g)
- 1
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di coder/slog
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 30/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
-
feature
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
-
feature
Difficoltà 3/5 1-2 giorni Idoneità per principianti 35/100
-
feature
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
Issue simili
-
bug github_actions
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
registrystack/registry-stack#1393 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
JakeChampion/lang#10213 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
oasisprotocol/oasis-sdk#2523 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100