티스토리 뷰

Logback이란?

- 자바 오픈소스 로깅 프레임워크로 slf4j의 구현체

- 스프링 부트 기본으로 설정되어 있어서 사용시 별도의 라이브러리를 추가하지 않아도 된다.

- spring-boot-start-web 안에 spring-boot-starter-logging 구현체가 있다.

- 로깅을 수행하기 위해 필요한 주요 설정 요소 3가지는 Logger, Appender, Encdoer가 있다.

 

Logback 기본 설정

logback-spring.xml을 resources 디렉토리에 만들어서 참조

1) classpath에 logback-spring.xml이 있으면 설정파일을 읽어간다.

2) logback-spring.xml이 없으면 .yml의 설정을 읽어간다.

3) logback-spring.xml과 .yml이 동시에 있으면 .yml 설정 파일 을 적용 후 xml 파일이 적용된다.

 

로그 레벨 순서 및 사용 방법

1) ERROR: 요청을 처리하는 중 오류가 발생한 경우 표시

2) WARN: 처리 가능한 문제, 향후 시스템 에러의 원인이 될 수 있는 경고성 메시지

3) INFO: 상태변경과 같은 정보성 로그를 표시

4) DEBUG: 프로그램을 디버깅하기 위한 정보 표시

5) TRACE: 추적 레벨은 Debug 보다 훨씬 상세한 정보를 나타냄

 

스프링 부트에서 레벨 지정 방법

1) 루트 레벨 전체 로깅 레벨 지정

logging.level.root=info

2) 패키지별로 로깅 레벨 지정

logging.level.com.god.bo.test=info 
logging.level.com.god.bo.test.controller=debug

예시)

package com.god.bo.test.controller;

@Controller
public class TestController {
    private final Logger logger = LoggerFactory.getLogger(this.getClass());

    @RequestMapping(value = "/test")
    public ModelAndView test() throws Exception{

        logger.trace("Trace Level 테스트");
        logger.debug("DEBUG Level 테스트");
        logger.info("INFO Level 테스트");
        logger.warn("Warn Level 테스트");
        logger.error("ERROR Level 테스트");

        return mav;
    }
}

 

Spring boot profiles

* application.yml

spring:
  profiles:
    active:
      - local
    group:
      local:
        - site-local
        - db-local
      dev:
        - site-dev
        - db-dev
    include:
      - db
      - my-service
      - site

- spring-profiles-active: 기본적으로 활성화 할 profile을 local로 설정

- spring-profiles-group

 - local

 - dev

- spring-profiles-include: 어플리케이션을 실행할 때 profile을 포함하여 실행할 수 있다.

 

* application-db.yml

#default 공통설정
spring:
  jpa:
    show-sql: false
    open-in-view: false
    database-platform: MYSQL
    hibernate:
      ddl-auto: none
      use-new-id-generator-mappings: true
    properties:
      hibernate.format_sql: true
      hibernate.show_sql: false
      hibernate.dialect: org.hibernate.dialect.MySQL57Dialect
      hibernate.default_fetch_size: ${chunkSize:100}
      hibernate.connection.provider_disables_autocommit: true
      hibernate.jdbc.batch_size: ${chunkSize:100}
      hibernate.order_inserts: true
      hibernate.order_updates: true

--- # local 설정
spring:
  config:
    activate:
      on-profile: "db-local"

  jpa:
    show-sql: true
    database-platform: H2
    hibernate:
      ddl-auto: create-drop

  datasource:
    hikari:
      driver-class-name: org.h2.Driver
      jdbc-url: jdbc:h2:mem://localhost/~/divelog;MODE=MySQL;DATABASE_TO_LOWER=TRUE;CASE_INSENSITIVE_IDENTIFIERS=TRUE;
      username: sa
      password:

--- # dev 설정
spring:
  config:
    activate:
      on-profile: "db-dev"

  jpa:
    hibernate:
      ddl-auto: update
  datasource:
    hikari:
      driver-class-name: org.mariadb.jdbc.Driver
      ...

- spring-config-active-on-profile: 

 

* application-site.yml

site:
  author-name: JuHyun
  author-email: a@a.com

--- # local 설정
spring:
  config:
    activate:
      on-profile: "site-local"

site:
  author-name: JuHyun-local
  author-email: a.local@a.com

--- # dev 설정
spring:
  config:
    activate:
      on-profile: "site-dev"

site:
  author-name: JuHyun-dev
  author-email: a.dev@a.com

- spring-config-active-on-profile: db와 마찬가지로 application.yml 파일에서 작성한 group profile

 

Springutils의 StringUtils

StringUtils: 자바의 String 클래스가 제공하는 문자열 관련 기능을 강화한 클래스

 

유용한 메서드

1) isEmpty(): null 체크도 해주고, 길이가 0이 아닌지 체크를 하는 것

- string이 아닌 객체를 null 체크하고 싶을 때 사용 (Long, Integer)

public static boolean isEmpty(@Nullable Object str) {
		return (str == null || "".equals(str));
	}

 

2) hasText(): 문자열 유효성 검증 유틸 메소드

- null 체크, 길이가 0보다 큰지 체크, 공백이 아닌 문자열이 하나라도 포함되었는지까지 한번에 검증

public static boolean hasText(@Nullable String str) {
		return (str != null && !str.isEmpty() && containsText(str));
	}
    
    private static boolean containsText(CharSequence str) {
		int strLen = str.length();
		for (int i = 0; i < strLen; i++) {
			if (!Character.isWhitespace(str.charAt(i))) {
				return true;
			}
		}
		return false;
	}

Springutils의 CollectionUtils

CollectionUtils: java Collection(List, Map, Set)의 종류의 값들의 존재 여부를 판단하는 메서드

public static boolean isEmpty(@Nullable Collection<?> collection) {
	return (collection == null || collection.isEmpty());
}

public static boolean isEmpty(@Nullable Map<?, ?> map) {
	return (map == null || map.isEmpty());
}

'SPRING' 카테고리의 다른 글

@ExceptionHandler, @ControllerAdvice, AOP  (0) 2023.06.29
ResponseEntity, custom Exception,  (0) 2023.06.29
[프로젝트 구조] entity,dto,controller,service,repository  (0) 2023.06.29
@RequestParam  (0) 2023.06.29
1. SPRING DI  (0) 2022.12.07
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함