한번 날리고 다시 쓰는 포스트.
힘이 없다......
무튼 나는 이제 gradle로 개발하려고 한다.
framework | springboot
build tool | gradle
ide | STS
스프링부트 초보의 미니 프로젝트 만들기
lombok 설치하기
기존 포스트에서 나는 스프링부트 설치할 때 dependency에 롬복도 설치를 해놔서 추가로 뭘 할게 없다.
그러나 혹시라도 모르는 분들을 위해 기록을 해볼까 함.
1. build.gradle
2. dependencies에 아래 항목 추가
dependencies {
// ...
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
}
3. build.gradle 우클릭 -> gradle -> refresh gradle project
log4j2 설치하기
1. build.gradle 로 간다
2. configurations에 아래 내용 추가하자.
기존 모듈의 로깅이랑 지금 우리가 설치하려는 log4j2가 겹치면서 충돌이 날 수 있어서 기존 모듈을 제외시키려고 하는 것.
configurations {
// ..
all { /*logback 의존성 추가하고 충돌을 방지 위해*/
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
}
}
3. dependencies에 아래 항목 추가
dependencies {
//...
implementation 'org.springframework.boot:spring-boot-starter-log4j2'
}
4. build.gradle 우클릭 -> gradle -> refresh gradle project
일단 이렇게 해서 설치는 완료한 것임.
5. src/main/resources에 log4j2.xml 파일 생성.
여기서 우리는 log4j2에 대한 설정을 할 예정이다.
6. log4j2.xml에 이렇게 쓴다.
각각의 의미에 대해서는 주석 달아놓음.
<?xml version="1.0" encoding="UTF-8"?>
<Configuration debug="true" scan="true"
scanPeriod="60 seconds">
<!--변수 설정 -->
<Properties>
<Property name="LOG_PATH" value="logs"></Property> <!--로그 파일 경로 -->
<Property name="LOG_FORMAT" value="[%date{yyyy-MM-dd HH:mm:ss}][%level][%file:%line] %msg%n" /> <!--로그 출력 형태 -->
</Properties>
<Appenders>
<!-- 콘솔 로그 -->
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="${LOG_FORMAT}" />
<charset>UTF-8</charset>
</Console>
<!-- 로그 파일 -->
<RollingFile name="file"
fileName="${LOG_PATH}/chatbot.log" append="true" filePattern="${LOG_PATH}/chatbot.%d{yyyy-MM-dd}-%i.log">
<PatternLayout pattern="${LOG_FORMAT}" />
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true" /> <!-- 파일 로그 생성 간격 -->
<SizeBasedTriggeringPolicy size="50MB" />
</Policies>
<DefaultRolloverStrategy>
<!-- 지울 Depth. 파일만 지울 땐 1을 넣어준다 -->
<Delete basePath="logs" maxDepth="1">
<!-- exceeds 값을 넘을 시 파일이 제거 -->
<IfAccumulatedFileCount exceeds="10"/>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
</Appenders>
<Loggers>
<!-- FATAL, ERROR, WARN, INFO, DEBUG, TRACE -->
<Root level="info">
<AppenderRef ref="console" />
<AppenderRef ref="file" />
</Root>
<!-- 패키지별 log level -->
<logger name="org.springframework" level="info" additivity="false">
<AppenderRef ref="console" />
<AppenderRef ref="file" />
</logger>
</Loggers>
</Configuration>
7. src/main/java/miniproject/HelloController.java 로 간다.
그리고 이전 포스트에서 hello world 찍어보려고 만들어둔 HelloController에서 log4j2 잘 나오는지 확인해 볼 예정이다.
8. 아래처럼 쓴다. 참고로 import 자동으로 하고싶으면 ctrl+shift+o 하면 된다.
나는 초보라서 이런거 하나하나를 기록해둬야 한다..
package miniproject;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import lombok.extern.log4j.Log4j2;
@Log4j2
@RestController
public class HelloController {
@RequestMapping("/console")
public static void main(String[] args) {
System.out.println("helloWorld");
}
@RequestMapping("/web")
public String reHello() {
return "helloword";
}
@GetMapping(value = "/log")
public void log() throws Exception {
// FATAL, ERROR, WARN, INFO, DEBUG, TRACE
log.trace("Hi I'm {} log", "TRACE");
log.debug("Hi I'm {} log", "DEBUG");
log.info("Hi I'm {} log", "INFO");
log.warn("Hi I'm {} log", "WARN");
log.error("Hi I'm {} log", "ERROR");
}
}
위 내용을 보면 @GetMapping(value = "/log") 이라고 되어있으므로
주소창에 localhost:8080/log 를 찍고 들어가면 콘솔창에 "Hi I'm 어쩌구 log "라고 뜰 것이다.
그런데 나는 xml파일에서 root level을 info로 지정해놨기 때문에 trace랑 debug레벨은 콘솔에 안뜰것이다.
잘 나오는지 확인해보자.
9. 서버 구동하고 http://localhost:8080/log 쳐서 들어가보기.
와~~ 잘 뜬다!!
오늘 배운 것을 정리해보면...
코드고 롬복이고 다 떠나서
수정버튼 누를때 본인이 수정버튼 누르고있는지 삭제버튼 누르고있는지 반드시 확인을 해봐야 한다는 것을 알았다..
'개발 이야기 > backend' 카테고리의 다른 글
스프링부트 미니 프로젝트 만들기 - 리액트 연동 초기 세팅 (0) | 2023.10.09 |
---|---|
스프링부트 미니 프로젝트 만들기 - MVC 모델 큰 그림으로 개념잡기 (0) | 2023.10.09 |
스프링부트 미니 프로젝트 만들기 - Maven, Gradle 두 버전으로 프로젝트 생성 (1) | 2023.10.09 |
springboot에 log4j2 설정하기(gradle버전) (0) | 2023.10.09 |
코딩애플 node.js강의 til 2 - 데이터 아이디 만들기 (0) | 2023.10.09 |
댓글