Una soluzione che funziona per colorare tutti i tipi di testo, non solo i file di registro, è uno strumento Python, ' colout '.
pip install colout
myprocess | colout REGEX_WITH_GROUPS color1,color2... [attr1,attr2...]
Dove qualsiasi testo nell'output di 'myprocess' che corrisponde al gruppo 1 del regex verrà colorato con color1, gruppo 2 con color2, ecc.
Per esempio:
tail -f /var/log/mylogfile | colout '^(\w+ \d+ [\d:]+)|(\w+\.py:\d+ .+\(\)): (.+)$' white,black,cyan bold,bold,normal
vale a dire che il primo gruppo regex (parentesi) corrisponde alla data iniziale nel file di registro, il secondo gruppo corrisponde a un nome di file, numero di riga e nome della funzione di Python e il terzo gruppo corrisponde al messaggio di registro che segue. Questo sembra:
Nota che le linee o parti di linee che non corrispondono a nessuna delle mie regex sono ancora echeggiate, quindi questo non è come 'grep --color' - nulla viene filtrato dall'output.
Ovviamente questo è abbastanza flessibile da poterlo utilizzare con qualsiasi processo, non solo per il loging dei file di log. Di solito ho appena tirato fuori una nuova regex al volo ogni volta che voglio colorare qualcosa. Per questo motivo, preferisco il colore a qualsiasi strumento personalizzato di colorazione dei file di log, perché ho solo bisogno di imparare uno strumento, indipendentemente da ciò che sto colorando: registrazione, output di test, sintassi evidenziando frammenti di codice nel terminale, ecc.
sed
: stackoverflow.com/a/14691971/52074