Combinando tail && journalctl

27

Estoy siguiendo los registros de mi propia aplicación y postgres.

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

Necesito incluir los registros de pgpool. Solía ​​ser syslog pero ahora está en journalctl.

¿Hay alguna manera de vincular tail -f && journalctl -f?

bikey
fuente

Respuestas:

27

Podrías usar:

journalctl -u service-name -f

-f, - sigue

Muestra solo las entradas de diario más recientes e imprime continuamente nuevas entradas a medida que se agregan al diario.

Aquí he agregado "nombre de servicio" para distinguir esta respuesta de otras; sustituye el nombre real del servicio en lugar del texto service-name.

Toufic
fuente
20

Puede reenviar sus entradas de registro al diario :

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

y luego use journalctl -f... aunque como Mark mencionó, eso imprimirá todas las entradas de diario


Una forma de filtrar solo los mensajes de esos registros y de esa unidad en particular es usar un SYSLOG_IDENTIFIERarchivo distinto, es decir, editar el archivo de la unidad y debajo de la [Service]sección agregar, por ejemplo

SyslogIdentifier=my_stuff

reinicie la unidad y luego ejecute systemd-catcon el mismo identificador

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

y finalmente consulte el diario solo para ese identificador particular:

journalctl -f -t my_stuff
don_crissti
fuente
4

Si tiene bash disponible, puede usar la sustitución de procesos como uno de los tailparámetros:

tail -f /tmp/myapp.log /var/log/postgresql/postgresql.main.log <(journalctl -f)
Jeff Schaller
fuente
Esta es la forma elegante que también probé, pero no funciona. Tail muestra que está usando / dev / fd / xx, pero no se muestran registros.
Bikey
correcto; / dev / fd / xxx es la tubería temporal que bash usa para implementar la sustitución del proceso; cualquier salida de journalctl aparecerá allí.
Jeff Schaller
55
Probablemente no desee seguir todo el diario, sino solo los de la unidad pgpool. Asumiendo el servicio nombrado pgpool.service, intente journalctl -fu pgpool.service. Además, si no está ejecutando esto como root, ¡asegúrese de que el usuario esté en el systemd-journalgrupo!
Mark Stosberg
1

prueba algo como:

tail -f /tmp/myapp.log >> /tmp/tail.log &
journalctl -f >> /tmp/tail.log &
tail -f /tmp/tail.log
Paul
fuente