꼬리 및 저널링 결합


27

내 앱과 postgres의 로그를 마무리하고 있습니다.

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

pgpool의 로그를 포함시켜야합니다. 이전에는 syslog 였지만 지금은 journalctl입니다.

tail -f && journalctl -f를 함께 묶는 방법이 있습니까?

답변:


27

당신은 사용할 수 있습니다 :

journalctl -u service-name -f

-f, --follow

가장 최근의 분개 만 표시하고 분개에 추가 된 새 항목을 계속 인쇄합니다.

이 답변을 다른 사람과 구별하기 위해 "service-name"을 추가했습니다. 텍스트 대신 실제 서비스 이름으로 대체하십시오 service-name.


20

로그 항목을 저널에 전달할있습니다 .

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

journalctl -fMark가 언급했듯이 ... 을 사용 하면 모든 분개가 인쇄됩니다.


해당 로그와 해당 특정 장치의 메시지 만 필터링하는 한 가지 방법 SYSLOG_IDENTIFIER은 장치 파일을 편집하고 [Service]섹션 추가 아래에서 고유 한 예 를 사용하는 것입니다.

SyslogIdentifier=my_stuff

장치를 다시 시작한 다음 systemd-cat동일한 식별자 로 실행 하십시오.

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

마지막으로 해당 특정 식별자에 대해서만 저널을 쿼리하십시오.

journalctl -f -t my_stuff

4

bash를 사용할 수있는 경우 프로세스 대체tail매개 변수 중 하나로 사용할 수 있습니다 .

tail -f /tmp/myapp.log /var/log/postgresql/postgresql.main.log <(journalctl -f)

이것은 내가 시도한 우아한 방법이지만 작동하지 않습니다. Tail은 / dev / fd / xx를 사용하고 있지만 로그가 표시되지 않음을 보여줍니다.
자전거 타기

옳은; / dev / fd / xxx는 프로세스 대체를 구현하기 위해 bash가 사용하는 임시 파이프입니다. 모든 journalctl 출력이 거기에 표시됩니다.
Jeff Schaller

5
아마도 전체 저널을 따르고 싶지는 않지만 pgpool 단위의 저널 만 따르고 싶을 것입니다. 라는 서비스를 가정하고 pgpool.service시도하십시오 journalctl -fu pgpool.service. 또한 루트로 이것을 실행하지 않는 경우 사용자가 systemd-journal그룹 에 있는지 확인하십시오 !
Mark Stosberg

1

다음과 같은 것을 시도하십시오 :

tail -f /tmp/myapp.log >> /tmp/tail.log &
journalctl -f >> /tmp/tail.log &
tail -f /tmp/tail.log
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.