사용량이 적으면 실시간 로그를 확인할 때 tail -f 만 걸어놔도 올라오는 로그 자체가 별로 없기 때문에 클라이언트 동작에 따른 서버 로그를 확인하기가 쉽다. 하지만 사용량이 많으면 내가 원하는 정보 말고도 다른 로그가 계속 출력되기 때문에 자체 필터링해서 보긴 어렵다.
그럴 땐 grep 명령어를 함께 사용하면 된다.
tail -f grep 필터링
기본 필터링
tail -f [로그파일명] | grep "[필터링할 문자열]"
예를 들어 logfile.2024-08-23.log 라는 로그 파일 출력 내용 중 192.168.91.151 라는 IP에서 들어온 출력만 보고 싶으면
tail -f logfile.2024-08-23.log | grep "192.168.91.151"
처럼 사용하면 해당 문자열이 포함된 출력만 화면에 보이게 된다.
두 개 이상 필터링
필터링 하고 싶은 단어가 두 개 이상이면 -E 옵션과 | 를 사용한다.
tail -f logfile.2024-08-23.log | grep -E "192.168.91.151|192.168.91.152"
대소문자 무시
대소문자를 구별하지 않고 필터링할 땐 -i 옵션을 사용한다.
tail -f logfile.2024-08-23.log | grep -i "error"
이렇게 쓰면 error와 ERROR 모두 필터링한다.
결과를 파일로 저장
필터링한 출력 결과를 파일로도 저장하려면 tee 명령어를 사용한다.
tail -f logfile.2024-08-23.log | grep "error" | tee filtered_errors.log
출력할 때 하이라이트 표시
필터링한 단어를 출력할 때 색으로 하이라이트를 하면 좀 더 편하게 볼 수 있다.
tail -f logfile.2024-08-23.log | grep --color=auto "error"
다만 tee 로 저장시킬 땐 적용되지 않는다.