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?

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.


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

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)

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.