로그 종류로는 trace, info, debug, wran, error 가 있다
private Logger log = LoggerFactory.getLogger(getClass() 아니면 해당 클래스명.class를 넣어준다.);
로그를 찍을수 있게 만들어서
log.trace("trace log={}", name);
log.debug("debug log={}", name);
log.info("info log={}", name);
log.warn("warn log={}". name);
log.error("error log={}". name);
이런식으로 자기가 원하는 로그를 찍어볼수 있다.
(log에 문자열과 변수를 연결할때 + 아닌 , 를 쓸때 ={}이 중괄호를 써야 값이 들어간다.
안쓰면 값이 안들어가서 error log= 콘솔에 이것만 찍힘)
그런데 롬복에 있는 @Sl4j라는 어노테이션을 클래스 레벨에 넣어주면
private Logger log = LoggerFactory.getLogger(getClass() 아니면 해당 클래스명.class를 넣어준다.);
이 문장은 사라져도 된다.
@Sl4j만 써주면 바로 log.info()등 모든 로그로 접근 가능하다.
로그 설정 방법으로는 application.properties 파일에
#전체 로그 레벨 설정(기본 info)
logging.level.root=info
#hello.springmvc 패키지에 그 하위 로그 레벨 설정
Logging.level.hello.springmvc=debug
이렇게 설정해주면 된다.
원하는 로그를 레벨에 설정을 해주면 그에 맞는 로그 들이 콘솔창에 뜬다.
보통 debug는 개발에 사용되고 info는 운영에 사용된다.
gradle에는 설정한것 없다.
마지막으로 로그를 출력할때에는 log.trace("trace log={}", name); 이런식으로 변수와 문자열 연결할때 쉼표를 써야한다.
log.trace("trace log={}"+ name); 이렇게 + 를 쓰면 자바에서는 연산을먼저 하기 때문에 쓸때없는 연산이 일어나면서 메모리를 낭비하게 된다. 실제로 trace를 출력하지 않아도 + 기호때문에 자바에서는 연산을 하게 된다. 그렇기 때문에 항상 쉼표를 쓰자.
로그 사용 장점은 쓰레드정보, 클래스 이름 같은 부가 정보를 함께 볼 수 있고 출력 모양을 조정할 수 있다.
파일이나 네트워크 등, 로그를 별도의 위치에 남길 수 있다. 특히 핲일로 남길때는 일별, 특정 용량에 따라 로그를 분할 하는것도 가능하다.
성능도 System.out보다 좋다.
로그인터페이스에는
SL4J와 Logback이 있다.
'스프링강의' 카테고리의 다른 글
의존관계 주입 (0) | 2022.05.28 |
---|---|
프레임워크와 라이브러리의 차이 (0) | 2022.05.10 |
WEB-INF (0) | 2021.12.28 |
웹서버와 웹어플리케이션 서버 (0) | 2021.11.23 |
서블릿 컨테이너 (0) | 2021.11.23 |