programing

SpringBoot 로깅 - 모든 로그 항목 시작 시 관련 없는 하이픈 사용

css3 2023. 8. 18. 22:50

SpringBoot 로깅 - 모든 로그 항목 시작 시 관련 없는 하이픈 사용

SpringBoot 1.3.5의 콘솔과 파일 로그에서 선두 하이픈을 제거하려고 합니다.기본 로그백 구성이 있는 RELEASE.

로깅 패턴은 다음과 같습니다.

logging:
  pattern:
    console: '%d{yyyy-MM-dd HH:mm:ss.SSS} %clr([${spring.application.name}]){red} %clr(%5p) %clr(${PID:- }){magenta} %clr(---){faint} %X{req.requestId} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%rEx}'

파일 로그 패턴은 색상 코드 없이도 유사합니다.두 가지 모두 선두 하이픈을 사용하여 첫 번째 줄 뒤에 모든 줄을 출력합니다. 이는 syslog - logstash - grok 필터링을 더 까다롭게 만듭니다.출력 예:

2016-06-21 11:52:00.576 [my-app] INFO etc.. (application started)
-2016-06-21 11:52:00.583 [my-app] DEBUG etc..
-2016-06-21 11:52:00.583 [my-app] INFO etc..

문서에서 이 동작을 언급하는 내용을 볼 수 없습니다.가능하다면, 그것을 없애는 방법에 대한 조언을 환영합니다!

갱신하다

아래 Edgar의 답변 덕분에, 이것은 우리의 로깅 패턴의 끝에 있는 다음과 같은 이유로 발생한 것으로 밝혀졌습니다.

${LOG_EXCEPTION_CONVERSION_WORD:-%rEx}

다음으로 대체했습니다.

${LOG_EXECUTION_CONVERSION_WORD:%rEx}

et voila, 다음 줄의 시작 부분에 있는 하이픈이 사라집니다.http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html#boot-features-custom-log-configuration 을 참조하십시오.

문제는 이 부분에 있습니다.logging.pattern.console:

${LOG_EXCEPTION_CONVERSION_WORD:-%rEx}

:-는 Logback의 기본값 구분 기호이며 logback.xml에서 사용해야 합니다.그러나 다음과 같이 구성하고 있습니다.application.properties여기서 Spring Framework의 기본값 구분 기호(:)을 사용해야 합니다.

사용한 대로:-당신은 가치를 사용한다는 것입니다.LOG_EXCEPTION_CONVERSION_WORD설정되지 않은 경우 사용-%rEx대신.

올바른 구문은 다음과 같습니다.

${LOG_EXCEPTION_CONVERSION_WORD:%rEx}

전체 로깅 형식을 제공하지 않으면 진단하기가 어렵습니다.우리 코드에서 비슷한 것이 보이는데, 이것을 다음 형식으로 포함하는 것과 관련이 있는 것 같습니다.

${LOG_EXCENVERSION_WORD:-%wException}

사용 중인 경우 하이픈이 %w 앞에 있을 수 있습니다.저는 이것의 의도된 목적이 무엇인지 잘 모르겠습니다.제가 그것을 찾으면 제 대답에 추가하겠습니다.

제안된 답변은 실제로 약간 잘못되었거나 적어도 발생하고 있는 상황에 대한 일부 세부 정보를 누락하고 있습니다.

대체하는 경우${LOG_EXCEPTION_CONVERSION_WORD:-%rEx}와 함께${LOG_EXCEPTION_CONVERSION_WORD:%rEx}봄이 그것을 보간할 것입니다.%rEx속성 파일을 구문 분석할 때(속성이 발생하지 않는 한)LOG_EXCEPTION_CONVERSION_WORD해당 시간에 사용 가능).

LOG_EXCEPTION_CONVERSION_WORD실제로는 에서 제공하는 시스템 속성입니다.LoggingSystemLogback(기본값에 ":" 구문을 사용함)을 통해 보간됩니다.

달러 문자에 대한 Spring 속성을 정의하여 문제를 해결할 수 있습니다.

dollar: $

다음 그런다바기꾸음을 대체합니다.${LOG_EXCEPTION_CONVERSION_WORD:-%rEx}매개 변수:

${dollar}{LOG_EXCEPTION_CONVERSION_WORD:-%rEx}

따라서 스프링 속성 보간을 우회합니다.그런 다음 Logback이 결과 패턴 보간을 처리합니다.

언급URL : https://stackoverflow.com/questions/37942604/springboot-logging-extraneous-hyphen-at-start-of-every-log-entry