오늘 다룰 내용
로깅은 시스템이 동작할 때 시스템의 상태 및 동작 정보를 시간 경과에 따라 기록하는 것을 의미한다.
로그를 사용하는 이유: 로깅을 통해 개발자는 개발 과정 혹은 개발 후에 발생할 수 있는 예상치 못한 애플리케이션의 문제를 진단하고 다양한 정보를 수집할 수 있으며, 사용자 로그의 경우 분석 데이터로 활용할 수 있다.
로그를 찍을 때는 파라미터 값을 전달하자
로그를 찍는 방법은 여러가지가 있다.
우선 print 방식을 예로 들 수 있다. print 방식은 내가 만든 객체를 inmemory 방식으로 처리한다.
따라서 print 방식의 로깅은 휘발성 로그이다.
다음으로는 Log4j2, logback과 같은 로그 프레임워크를 활용할 수 있다.
프레임워크를 사용하면 로그의 출력 형식을 지정하거나 파일화 하여 지정된 위치에 저장하는 등 다양한 기능을 제공 받을 수 있다.
따라서, 개발자가 필요로 하는 방식을 채택하되 성능과 유지보수성을 고려하여 로그를 작성할 수 있어야 한다.
다만, 우리는 프로그램의 유지 보수를 위해 로깅하는 것을 알아보고 있기 때문에 프레임워크를 사용하는 방식을 설명할 것이며 그 중에서도 Log4j2를 활용할 때 주의 사항에 대해서 간단하게 설명하고 마치겠다.
우선 Log4j2로 로깅 하는 방법은 두 가지 방법이 있다.
- 문자열에 값을 더하는 경우.
- ex 1) logger.debug("my name is "+name);
- 값을 파라미터로 넘기는 경우.
- ex 2) logger.debug("my name is {}", name);
첫 번째 방식은 "my name is "와 name을 더해 새로운 문자열 객체를 생성하는 연산이 이루어지고 그 결과를 출력하는 방식이며, 두 번째 방식은 값을 파라미터로 넘겨 출력하는 방식이다.
그렇다면 두 가지 방식 중 어떤 방식이 더 좋은 방식일까?
특별한 이유가 있지 않다면 두 번째 방식이 좀 더 효율적이다. 첫 번째 방식으로 로깅을 하게 된다면 로그를 불러올 때마다. 불필요한 연산을 하게 되기 때문이다. 값을 파라미터로 넘겨주는 방식인 두 번째 방식을 사용하도록 하자.
주의사항
로깅을 할 때는 개인 또는 회사 단위의 로그 기록 기준을 가지고 있어야 한다. 그렇지 않다면 많은 양의 로그를 서버가 감당하지 못하고 다운되거나 불필요한 로그로 인해 성능이 하락한 서비스를 제공할 수 있기 때문이다. 따라서 효율적인 로깅을 하는 방법을 고민해보는 것이 중요하다.
오늘 다룰 내용
로깅은 시스템이 동작할 때 시스템의 상태 및 동작 정보를 시간 경과에 따라 기록하는 것을 의미한다.
로그를 사용하는 이유: 로깅을 통해 개발자는 개발 과정 혹은 개발 후에 발생할 수 있는 예상치 못한 애플리케이션의 문제를 진단하고 다양한 정보를 수집할 수 있으며, 사용자 로그의 경우 분석 데이터로 활용할 수 있다.
로그를 찍을 때는 파라미터 값을 전달하자
로그를 찍는 방법은 여러가지가 있다.
우선 print 방식을 예로 들 수 있다. print 방식은 내가 만든 객체를 inmemory 방식으로 처리한다.
따라서 print 방식의 로깅은 휘발성 로그이다.
다음으로는 Log4j2, logback과 같은 로그 프레임워크를 활용할 수 있다.
프레임워크를 사용하면 로그의 출력 형식을 지정하거나 파일화 하여 지정된 위치에 저장하는 등 다양한 기능을 제공 받을 수 있다.
따라서, 개발자가 필요로 하는 방식을 채택하되 성능과 유지보수성을 고려하여 로그를 작성할 수 있어야 한다.
다만, 우리는 프로그램의 유지 보수를 위해 로깅하는 것을 알아보고 있기 때문에 프레임워크를 사용하는 방식을 설명할 것이며 그 중에서도 Log4j2를 활용할 때 주의 사항에 대해서 간단하게 설명하고 마치겠다.
우선 Log4j2로 로깅 하는 방법은 두 가지 방법이 있다.
- 문자열에 값을 더하는 경우.
- ex 1) logger.debug("my name is "+name);
- 값을 파라미터로 넘기는 경우.
- ex 2) logger.debug("my name is {}", name);
첫 번째 방식은 "my name is "와 name을 더해 새로운 문자열 객체를 생성하는 연산이 이루어지고 그 결과를 출력하는 방식이며, 두 번째 방식은 값을 파라미터로 넘겨 출력하는 방식이다.
그렇다면 두 가지 방식 중 어떤 방식이 더 좋은 방식일까?
특별한 이유가 있지 않다면 두 번째 방식이 좀 더 효율적이다. 첫 번째 방식으로 로깅을 하게 된다면 로그를 불러올 때마다. 불필요한 연산을 하게 되기 때문이다. 값을 파라미터로 넘겨주는 방식인 두 번째 방식을 사용하도록 하자.
주의사항
로깅을 할 때는 개인 또는 회사 단위의 로그 기록 기준을 가지고 있어야 한다. 그렇지 않다면 많은 양의 로그를 서버가 감당하지 못하고 다운되거나 불필요한 로그로 인해 성능이 하락한 서비스를 제공할 수 있기 때문이다. 따라서 효율적인 로깅을 하는 방법을 고민해보는 것이 중요하다.