programing

Intelij 내에서 Spring Boot 컬러 콘솔 로깅을 사용하고 있습니까?

golfzon 2023. 3. 5. 10:49
반응형

Intelij 내에서 Spring Boot 컬러 콘솔 로깅을 사용하고 있습니까?

Spring Boot 어플리케이션용 Intelliz Idea에서 컬러 출력을 얻는 방법을 알아낸 사람이 있습니까?

Mac, Intelij Idea 14 및 Spring Boot v1.2를 사용합니다.RELEASE를 설정하기만 하면 됩니다.

spring.output.ansi.enabled=ALWAYS

이것을 VM 옵션으로 추가했습니다(-Dspring.output.ansi.enabled=ALWAYS), 훌륭하게 동작합니다!

application.properties에서는 다음 행을 사용합니다(예를 들어).

logging.pattern.console= %d{yyyy-MMM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{15}) - %msg %n

Spring Boot와 거의 비슷한 패턴을 사용하고 싶다면 다음과 같은 패턴을 사용할 수 있습니다.

%date  %highlight(%-5level) [%12.12thread] %cyan(%-40.40logger{40}) : %msg %n

인텔리J IDEA의 application.properties에 이러한 속성을 추가하는 것만으로, 다음의 조작을 실시할 수 있습니다.

spring.main.banner-mode=off 
spring.output.ansi.enabled=ALWAYS
  • 시장에서 ANSI Console이라고 하는 이클립스 플러그인을 설치합니다.
  • spring.output.opting.enabled=ALWAYS@Application.pro perties/yml.
  • 애플리케이션을 스프링 부트로서 실행하면, 칼라 로그가 콘솔에 표시됩니다.

yml:

spring:
  output:
    ansi:
      enabled: ALWAYS

Gradle을 사용하여 모든 조건에서 로깅 컬러 지원을 활성화하는 일반적인 방법:

bootRun {
    def console = System.console() != null
    if (! console) { console = System.getenv()["TERM"].startsWith("xterm") }
    if (console) systemProperties 'spring.output.ansi.enabled': 'always'
}

여기 문제의 근원과 해결책이 있습니다.

로그 프레임워크는 두 가지 구현이 있었는데, 그 중 앱이 시작된 직후에 알림이 왔습니다.더 많은 것을 가질 수 있습니다.그것들은 모두 다양한 의존관계에서 유래하고 있습니다.메시지는 다음과 같습니다.

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:.../slf4j-simple-1.7.21.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:.../logback-classic-1.1.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]

보시다시피 2개의 로거 프레임워크를 가리키는2개의 바인딩이 있습니다.각각 독자적인 색 스키마를 사용하고 있습니다.그럼 어떤 것이 스프링 부츠에 의해 선택될까요? 튜토리얼에 따르면 목록에서 마지막 하나를 가져옵니다.즉, 색상 스키마는 어떤 기분 좋은 랜덤 선택에 의존합니다(목록이 어떻게 조립되는지 조사할 시간이 없습니다).

발견된 로깅 프레임워크 바인딩에 대한 정보를 수집한 후 종속성에서 중복된 바인딩들을 순차적으로 제거했습니다.

maven 트리를 구축하여 프로젝트에 불필요한 SLF4j 바인딩을 가져오는 종속성을 찾아 maven 또는 gradle 구성 파일에서 제외할 수 있습니다.

gradle을 사용하고 있기 때문에 이 설정을 build.gradle에 추가한 것입니다.

configurations {
    all {
        exclude group: 'org.slf4j', module: 'slf4j-simple' // no ansi colors in terminal (:
    }
}

이 제외에 의해 불필요한 바인딩이 삭제되고 ansi 컬러가 인텔리주 아이디어 단말기로 반환됩니다(프로젝트에 남아 있는 로깅 프레임워크는 하나뿐이고 이 프레임워크는 컬러 출력이 있기 때문입니다).

주의사항: 다음 날짜까지 Mac OS 터미널에서 앱을 시작할 경우

java -jar fileName.jar

명령어 컬러 출력은 없습니다.

새로운 버전의 IntelliJ(2019) 및 Spring Boot(2.0)에서는 IntelliJ 컬러 로깅 내에서 Spring Boot 애플리케이션을 실행하면 올바르게 출력되지만 유닛 테스트 실행 시 콘솔이 검출되지 않으므로 컬러 로깅은 사용되지 않습니다.Spring Boot에서 다음 속성을 찾을 수 없는 경우에도 콘솔이 존재함을 항상 고려하도록 강제하려면:

spring.output.ansi.console-available=true

★★★★★★★★★★★★★★★와 달리spring.output.ansi.enabled=ALWAYS이것에 의해, 검출 코드는 동작하고 있습니다만(Windows 를 사용하고 있는 경우는 색이 표시되지 않습니다), 테스트에서는(IntelliJ 와 Maven 의 양쪽 모두에서) 컬러 로깅이 발생합니다.

언급URL : https://stackoverflow.com/questions/28783832/getting-spring-boot-color-console-logging-working-within-intellij

반응형