A saída de varnishlog
pode ser canalizada para awk e reformatada para colocar a data no início de cada linha. A parte complicada é que varnishlog
armazena em buffer a saída, o que faz com que ela seja enviada para awk
depois que um número de linhas tiver sido gerado, resultando em todas as linhas recebendo o mesmo registro de data e hora do último que está no buffer . Para contornar isso, o comando unbuffer
pode ser usado para canalizar a saída de varnishlog
para awk
imediatamente para que cada linha receba um registro de data e hora apropriado.
unbuffer varnishlog -O -I 'Back healthy|Went sick' 2>&1 | awk '{ print strftime(), $0; fflush() }'
Isso resulta em uma saída como a seguinte, que pode ser anexada a um arquivo de log.
Wed Feb 20 15:20:58 EST 2013 0 Backend_health - webserver1 Went sick 4--X--- 2 3 5 0.000000 0.000679
Wed Feb 20 15:28:03 EST 2013 0 Backend_health - webserver1 Back healthy 4--X-RH 3 3 5 0.000622 0.000679 HTTP/1.1 200 OK
Observação: graças a esta resposta Kieron e esta resposta por Mark Harrison para as peças necessárias para descobrir isso.