프로젝트 생성
https://start.spring.io/에서 아래의 사진과같이 프로젝트를 생성한다.
주의할것은 Pakaging
부분이다. JSP를 사용하지 않기 때문에 JAR를 사용하는 것이 좋다. JAR를 사용하게 되면 항상 내장 서버(톰캣 등)를 사용하고, webapp
경로도 사용하지 않는다. 최근에는 주로 이 방식을 사용한다.
WAR를 사용하면 내장 서버도 사용가능 하지만, 주로 외부 서버에 배포하는 목적으로 사용한다.
그리고 LOMBOK 사용을위해 ctrl+alt+s
를 눌러 (Settings) Annotation 검색, 맨 상단 Enable antotation processing에 체크해준다.
Welcome 페이지 생성
스프링 부트 + Jar 를 사용하면 /resources/static/
위치에 index.html
파일을 두면 자동으로 Welcome 페이지로 처리해준다. (스프링 부트가 지원하는 정적 컨텐츠 위치에 /index.html 이 있으면 된다.
로깅
운영 시스템에서는 System.out.println()
과 같은 시스템 콘솔을 사용해서 필요한 정보를 출력하는게 아니라, 별도의 로깅 라이브러리를 활용해 로그를 출력한다.
기본적으로 스프링부트를 사용하면 스프링 부트 로깅 라이브러리(spring-boot-starter-logging)이 함께 포함되어 있다. 스프링 부트 로깅 라이브러리는 기본으로 아래의 로깅 라이브러리를 사용한다.
- SLF4J : http://www.slf4j.org
- Logback : http://logback.qos.ch
SLF4J
는 인터페이스이고, 구현체로 Logback
과 같은 로그 라이브러리를 사용하면 된다. 실무에서는 스프링 부트가 기본으로 제공하는 Logback 라이브러리를 대부분 사용한다.
로그 사용시 장점은 아래와 같다.
- 쓰레드 정보, 클래스 이름과 같은 부가 정보를 함께 볼 수 있고, 출력 모양을 조정할 수 있다.
- 현재 서버에따라 로그를 상황에 맞게 조절할 수 있다.(개발서버-debug, 운영서버-info)
- 콘솔에만 출력하는 것이 아닌, 파일이나 네트워크 등 로그를 별도의 위치에 남길 수 있다.
특히, 파일로 남길 때에는 일별 혹은 특정 용량에 따라 로그를 분할하는 것도 가능함. - Syetem.out 보다 성능이 좋다.(내부 버퍼링, 멀티쓰레드)
위의 이유로 실무에서는 꼭 로그를 사용해야한다.
사용방법
먼저 로그를 선언한다.
private final Logger log = LoggerFactory.getLogger(getClass());
private static final Logger log = LoggerFactory.getLogger(Xxx.class);
그리고 클래스 레벨에 @Slf4j 어노테이션을 붙여주면 된다.
로그 레벨 설정은 application.properties
에 아래의 코드로 설정할 수 있다.
#전체 로그 레벨 설정(기본 info)
logging.level.root=info
#hello.springmvc 패키지와 그 하위 로그 레벨 설정
logging.level.hello.springmvc=debug
스프링부트가 제공하는 로그 기능은 아래의 사이트를 참고한다.
로그를 올바르게 출력하기 위해서는 문자 더하기 연산이 아닌 아래의 방식으로 사용한다.
// 틀린 예)
log.trace("trace log=" + name);
// 옳은 예)
log.trace("trace log={}", name);
첫번째의 경우, 로그 출력자체에는 문제가 없으나 해당 로그가 출력되지 않더라도 더하기 연산은 수행된다.
두번째의 경우, SLF4J의 치환문자를 사용하여 불필요한 연산이 발생하지 않는다.
@RequestMapping("/log-test")
public String logTest() {
String name = "Spring";
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);
return "ok";
}
위 글은 김영한 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술의 일부 내용을 정리한 것입니다.
'Backend > Spring' 카테고리의 다른 글
[Spring] 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 #5 스프링 MVC 기본 기능 - HTTP 요청 (0) | 2024.08.21 |
---|---|
[Spring] 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 #5 스프링 MVC 기본 기능 - 요청 매핑 (0) | 2024.08.05 |
[Spring] 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 #5 스프링 MVC 구조 이해 (0) | 2024.07.30 |
[Spring] 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 #4 MVC 프레임워크 (0) | 2024.07.10 |
[Spring] 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 #3 서블릿, JSP, MVC 패턴 (0) | 2024.06.25 |