Uma solução que funciona para colorir todos os tipos de texto, não apenas os arquivos de log, é uma ferramenta Python, ' colout '.
pip install colout
myprocess | colout REGEX_WITH_GROUPS color1,color2... [attr1,attr2...]
Onde qualquer texto na saída de 'myprocess' que corresponda ao grupo 1 da regex será colorido com cor1, grupo 2 com cor2, etc.
Por exemplo:
tail -f /var/log/mylogfile | colout '^(\w+ \d+ [\d:]+)|(\w+\.py:\d+ .+\(\)): (.+)$' white,black,cyan bold,bold,normal
ou seja, o primeiro grupo regex (parens) corresponde à data inicial no arquivo de log, o segundo grupo corresponde a um nome de arquivo python, número de linha e nome de função, e o terceiro grupo corresponde à mensagem de log que vem depois disso. Isto parece com:
Observe que linhas ou partes de linhas que não correspondem a nenhuma da minha regex ainda são ecoadas, portanto, isso não é como 'grep --color' - nada é filtrado para fora da saída.
Obviamente, isso é flexível o suficiente para que você possa usá-lo com qualquer processo, e não apenas com arquivos de log finais. Normalmente, eu apenas preparo um novo regex rapidamente, sempre que quiser colorir alguma coisa. Por esse motivo, prefiro o colout a qualquer ferramenta personalizada para colorir arquivos de log, porque só preciso aprender uma ferramenta, independentemente do que estiver colorindo: registro, saída de teste, sintaxe destacando trechos de código no terminal etc.
sed
: stackoverflow.com/a/14691971/52074