Combinando tail && journalctl

27

Estou seguindo registros do meu próprio aplicativo e do postgres.

tail -f /tmp/myapp.log /var/log/postgresql/postgresql.main.log

Eu preciso incluir os logs do pgpool. Costumava ser syslog, mas agora está no journalctl.

Existe uma maneira de amarrar tail -f && journalctl -f juntos?

de bicicleta
fonte

Respostas:

27

Você poderia usar:

journalctl -u service-name -f

-f, --follow

Mostre apenas os lançamentos mais recentes e imprima continuamente novos lançamentos à medida que são anexados ao diário.

Aqui eu adicionei "service-name" para distinguir esta resposta das outras; você substitui o nome do serviço real em vez do texto service-name.

Toufic
fonte
20

Você pode encaminhar suas entradas de log para o diário :

systemd-cat tail -f /tmp/myapp.log /var/log/postgresql.log

e então use journalctl -f... embora, como Mark mencionou, isso imprima todos os lançamentos no diário.


Uma maneira de filtrar apenas as mensagens desses logs e dessa unidade específica é usar um SYSLOG_IDENTIFIERarquivo distinto, por exemplo, editar o arquivo da unidade e, na [Service]seção

SyslogIdentifier=my_stuff

reinicie a unidade e execute systemd-catcom o mesmo identificador

systemd-cat -t my_stuff tail -f /tmp/myapp.log /var/log/postgresql.log

e, finalmente, consulte o diário apenas para esse identificador específico:

journalctl -f -t my_stuff
don_crissti
fonte
4

Se você tiver o bash disponível, poderá usar a substituição do processo como um dos tailparâmetros:

tail -f /tmp/myapp.log /var/log/postgresql/postgresql.main.log <(journalctl -f)
Jeff Schaller
fonte
Esta é a maneira elegante que eu também tentei, mas não funciona. Tail mostra que está usando / dev / fd / xx, mas nenhum registro é exibido.
7266 bikey
corrigir; / dev / fd / xxx é o canal temporário que o bash usa para implementar a substituição do processo; qualquer saída do journalctl aparecerá lá.
Jeff Schaller
5
Você provavelmente não quer seguir o diário inteiro, mas apenas os da unidade pgpool. Assumindo o serviço nomeado pgpool.service, tente journalctl -fu pgpool.service. Além disso, se você não estiver executando isso como root, verifique se o usuário está no systemd-journalgrupo!
Mark Stosberg
1

tente algo como:

tail -f /tmp/myapp.log >> /tmp/tail.log &
journalctl -f >> /tmp/tail.log &
tail -f /tmp/tail.log
Paulo
fonte