놀코에 오신 것을 환영합니다.

놀아보자 코드랑

KOSTA/SpringBoot

STS 설치 및 설정, Junit5, Logger(logback) 설정

놀코 2021. 8. 2. 14:09

STS설치하기

https://spring.io/tools

 

Spring Tools 4 is the next generation of Spring tooling

Largely rebuilt from scratch, Spring Tools 4 provides world-class support for developing Spring-based enterprise applications, whether you prefer Eclipse, Visual Studio Code, or Theia IDE.

spring.io

 

UTF-8 설정, JRE 1.8 버전 확인

Workspace UTF-8 설정
둘중 아무거나 써도 되며, 1.8버전만 맞다면 무방함
컴파일러 버전 1.8로 셋팅
Spring Properties파일 인코딩 UTF-8설정
스프링 실행화면


Spring Boot 구조

War파일로 패키징시 Servletinitializer.java파일이 함께 생성됨
Jar패키징시 Servletinitializer.java가 없음

 

ComponentScan 설정


Junit5 테스트

Spring 클래스 파일이 있는 같은 패키지나, 하위 패키지에서만 Test가능

상위 com패키지에 Application.java파일을 옮긴후 어느 테스트 패키지에서나 Test가 가능하다

 


MockMvc를 이용한 테스트

package com.day.control;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultActions;
import org.springframework.test.web.servlet.ResultMatcher;
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;

@WebMvcTest(SampleController.class)
class SampleControllerTest {
	@Autowired
	private MockMvc mockMvc;
	@Test
	void test() throws Exception {
		MockHttpServletRequestBuilder requestBuilder;
		requestBuilder = MockMvcRequestBuilders.get("/hello");
		requestBuilder.accept(MediaType.APPLICATION_JSON);//요청양식
		ResultActions resultActions = mockMvc.perform(requestBuilder);//요청테스트
		
		ResultMatcher matcher = MockMvcResultMatchers.status().isOk();
		
		resultActions.andExpect(matcher);
	}

}

 


accept요청형식 구조.


Spring application.properties 우선순위


Logger설정

application-dev.properties 코드 내용

rver.port=9999
server.servlet.context-path=/dmlogback
#logger level
logging.level.root=warn

#기본적으로 Spring Boot log는 console 만 log를 처리
#절대 경로로 표현되거나 현재 경로의 상대 경로로 로그 파일명을 지정한다.
#logging.file.name=.file=./log/my.log
#logging.file의 값이 없을 때 동작한다. 지정된 경로에 spring.log로 로그를 남긴다.
logging.file.path=./log
#로그 파일의 사이즈가 지정된 임계치를 초과하면 파일명에 index를 추가한 후 새로운 파일을 작성한다.
logging.logback.rollingpolicy.max-file-size=1KB
logging.logback.rollingpolicy.max-history=1

logging.pattern.console=%-5level %d{yy-MM-dd HH:mm:ss}[%thread] [%logger{0}:%line] - %msg%n
logging.pattern.file=%-5level %d{yy-MM-dd HH:mm:ss}[%thread] [%logger{0}:%line] - %msg%n

 

logback-spring.xml으로 설정시

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>

<!-- 60초마다 설정 파일의 변경을 확인 하여 변경시 갱신 --> 
<configuration scan="true" scanPeriod="60 seconds"> 
  
<!-- Console Appender --> 
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> 
  <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 
    <!-- <pattern>${LOG_PATTERN}</pattern>  -->
    <pattern>%-5level %d{yy-MM-dd HH:mm:ss}[%thread] [%logger{0}:%line] - %msg%n</pattern>
  </encoder> 
</appender> 

<!-- File Appender --> 
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
<!-- 파일경로 설정 --> 
  <file>./log/my.log</file>
  <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 
    <charset>UTF-8</charset>
    <pattern>%-5level %d{yy-MM-dd HH:mm:ss}[%thread] [%logger{0}:%line] - %msg%n</pattern>
  </encoder>
  <!-- Rolling 정책 --> 
  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
    <!-- .gz,.zip 등을 넣으면 자동 일자별 로그파일 압축 --> 
    <fileNamePattern>./my.%d{yyyy-MM-dd}_%i.log</fileNamePattern> 
    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 
    <!-- 파일당 최고 용량 kb, mb, gb --> 
      <maxFileSize>10MB</maxFileSize> 
    </timeBasedFileNamingAndTriggeringPolicy> 
    <!-- 일자별 로그파일 최대 보관주기(~일), 해당 설정일 이상된 파일은 자동으로 제거--> 
    <maxHistory>30</maxHistory> 
  </rollingPolicy>
</appender>
<root level="WARN">
    <appender-ref ref="CONSOLE"/>
<!--     <appender-ref ref="FILE"/> -->
<!-- 파일 출력시 설정 -->
</root>
</configuration>

'KOSTA > SpringBoot' 카테고리의 다른 글

Spring Boot에서 CORS 적용해보기  (0) 2021.08.13
cascade , mappedBy, fetch  (0) 2021.08.12
SpringBoot - JPA(2)  (0) 2021.08.05
Spring - Qualifier설정, Repboard 병합, JPA  (0) 2021.08.04
Spring Boot - Mybatis 설정  (0) 2021.08.03