학습 목표

  • Spring Application Log Level 변경
  • FailureAnalyzer
  • Banner
  • SpringApplicationBuilder

Spring Application Log Level 변경

default는 INFO 정보 까지만 Log가 출력된다.
DEBUG 까지 출력되도록 변경해보자.

  • 아래와 같이 Application Run/Debug 설정으로 가서
    Program arguments 영역에
    '--debug' 라고 입력해 준 후 'apply' 및 'OK'.

FailureAnalyzer

Application 실행에 Error가 발생했을 때, Error에 대하여 Console log에 사용자가
보기 편하도록 가독성 좋게 출력 해주는 기능.
기본적으로 springboot Application에는 여러 FailureAnalyzer들이 등록되어 있다.

Banner

Banner는 springboot Application 실행 시, Console 상에 맨 처음 나오는
'Spring' Logo Banner 부분이다.
이러한 Banner는 Customizing 할 수 있다.

Customizing을 위한 Banner 파일을 정의할 때,
아래와 같은 변수들을 사용할 수 있다.

  • ${application.version}
  • ${application.formatted-version}
  • ${spring-boot.version}
  • ${spring-boot.formatted-version}
  • ${Ansi.NAME} (or ${AnsiColor.NAME}, ${AnsiBackground.NAME}, ${AnsiStyle.NAME})
  • ${application.title}

application 관련 변수는
MANIFEST.MF 파일 없이 Application 실행 시에는 Console 창에 표시되지 않는다.

정의한 MANIFEST.MF 파일이 따로 있거나,
mvnw 혹은 gradlew 를 통한 프로젝트 빌드 패키징 과정으로 배포된 jar 파일로
Application을 실행할 때 Console 창에 변수 값이 표시된다.

왜?

배포된 jar 파일은 MANIFEST.MF 파일을 자동으로 내포하고 있기 때문에.

.txt | image(.gif, .png 등) 파일로 Banner 부분을 원하는대로 꾸밀 수 있다.
파일의 작성한 .txt 파일 or image 파일은 'src/main/resources/' 에
'banner' 라는 파일명으로 위치해야 한다.

ex. banner.txt


==============================================
Application Running . . . !

It is The Custom Banner

linger0301's Spring Boot v${spring-boot.version}
==============================================

위와 같이 src/main/resources/ 에 banner.txt를 작성하여
Application를 실행 해 보았다.

기본적으로 'src/main/resources/'에 banner 파일을 두는게 맞지만
다른 위치에 파일을 두고싶다면 application.properties 를 통해서 설정 가능하다.
application.properties를 통한 banner 파일 설정은 위치 뿐만 아니라
인코딩 타입, 이미지 width, height 설정 등을 할 수 있다.

SpringApplication.setBanner()

banner 파일을 정의하지 않고, Application 클래스에서
SpringApplication.setBanner() 로 Banner를 Customizing 할 수 있다.

ex. Application.java

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(Application.class);

        app.setBanner(new Banner() {
            @Override
            public void printBanner(Environment environment, Class<?> sourceClass, PrintStream out) {
                out.println("================");
                out.println("메롱");
                out.println("================");
            }
        });
        app.run(args);
    }
}

만약에

정의한 banner 파일도 있고,
SpringApplication.setBanner()를 통한 Banner Customizing 코드 부분도 있다면
우선순위는 banner 파일 쪽이 더 높다.
따라서 파일대로 Banner가 표시된다.

배너 없애기

SpringApplication.setBannerMode()로 배너를 없앨 수 있다.

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(Application.class);
        app.setBannerMode(Banner.Mode.OFF);
        
        app.run(args);
    }
}

SpringApplicationBuilder로 빌더 패턴

빌더 패턴으로 배너 설정과 Application 등을 할 수 있다.

ex. Application.java

빌더 패턴으로 배너를 없앤 채로 Application을 실행 해 보겠다.

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        new SpringApplicationBuilder()
                .sources(Application.class)
                .bannerMode(Banner.Mode.OFF)
                .run(args);
    }
}

profile
올빼미를 사냥한 까마귀에서 진화한 독수리

0개의 댓글

Powered by GraphCDN, the GraphQL CDN