Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Terminal control characters are not always escaped safely

Aperta
#156 3 commenti 1 reazione 0 assegnatari Vedi su GitHub

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

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

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di coder/slog

Tutte le issue di coder/slog

Issue simili

Altre issue su Go

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.