RIMD 2023. 6. 16. 09:40

개발하다보면 서비스 문제 발생할 때 항상 찾아보게되는 로그!

로그는 필수~~~

 

로그 레벨

TRACE > DEBUG > INFO > WARN > ERROR 

자바를 처음 시작했을 때 System.out.println("Hello world!");을 사용해서 console창에 'Hello world!'를 출력 해본 경험이 있을 것이다.

 

초기 개발 공부를 배울 때 System.out.println()로 데이터 확인하고, 에러 출력 등 다양하게 사용했다.

logger는 Sysout으로 로그를 찍을 경우, 프로그램 부하도 덜 주고, 에러 발생 시 추적할 수 있는 정보도 더 많다고 한다.(?)

더 딥하게 파지 않아 여기까지만 ㅎ

 

실무 개발을 하다보면 sysout보다는 logger를 사용하고 있는 것을 확인 할 수 있습니다.

sysout은 지양하고 로깅 라이브러리를 사용하길 권장하는 편입니다.

 

logger 설정하는 부분은.. 추후 추가적으로 작성할 예정입니다.

 


 

도커 환경에 개발되어 있는 경우는

도커의 컨테이너에서 발생하는 로그들을 확인해야 할 때가 종종있습니다.

docker logs --tail 10 -f

위 명령어는 발생한 로그 중에 아래 10줄을 보여주는 명령어다.

--taill 옵션은 해당하는 파일의 마지막 부분을 확인 할 수 있습니다.

리눅스에서 tail명령어는 일반적으로 로그와 같이 시간에 따라 변하는 파일들을 grep과 같은 명령어로 조합해서 실시간으로 업데이트되는 로그를 분석하는 데 많이 사용됩니다.

자주 사용하는 옵션
-f     tail을 종료하지 않고 파일의 업데이트 내용을 실시간으로 계속 출력한다.
-n (라인 수)     파일의 마지막줄부터 지정한 라인수까지의 내용을 출력한다.
-c (바이트 수)     파일의 마지막부터 지정한 바이트만큼의 내용을 출력한다.
-q     파일의 헤더와 상단의 파일 이름을 출력하지 않고 내용만 출력한다.
-v     출력하기전에 파일의 헤더와 이름 먼저 출력한 후 파일의 내용을 출력한다.

-f옵션을 주면 터미널에서 foreground로 터미널의 프로세스를 동작하기 때문에 실시간으로 들어오는 로그들을 눈으로 확인할 수 있습니다.

*foreground
리눅스에서 'foreground'란 용어는 사용자가 직접 터미널과 상호작용할 수 있는 프로세스를 의미한다. 즉, 사용자가 명령을 실행하면 해당 프로세스는 기본적으로 foreground에서 실행되며, 해당 프로세스의 작업이 완료될 때까지는 터미널을 사용할 수 없다.
 

[Linux 이론] foreground, background

리눅스에서 Foreground와 Background를 이해하는 것은 중요한 개념이다. 기본적으로 리눅스에서 프로그램을 실행하면 해당 프로세스는 유니크한 ID(PID)로 생성되며 Foreground에서 실행된다. Foreground 프

easyitwanner.tistory.com

 

실시간 로그보기(tail + grep)

tail -f mylog.log | grep 'apple'

grep명령어는 특정 파일에서 문자열 찾기할 때 많이 사용된다.