programing

Spring Boot이 로그를 콘솔로 인쇄하지 못하도록 방지

randomtip 2023. 7. 20. 23:42
반응형

Spring Boot이 로그를 콘솔로 인쇄하지 못하도록 방지

응용 프로그램에 스프링 부트를 사용하고 있으며 기본 스프링 부트 로깅을 사용하고 있습니다.

내 안에서application.properties다음에 대한 파일 경로를 추가했습니다.logging.file,

        logging.file= ${logger_path}

그리고 나의pom.xml포함하다

       <logger_path>/tmp/app.log</logger_path>

응용 프로그램을 시작하면 로그 메시지가 다음 위치의 파일로 인쇄됩니다./tmp/app.log문제는 콘솔에 로그 메시지도 출력한다는 것입니다.내가 지정했는데 왜 콘솔에서 인쇄하는지 정말 이해할 수 없습니다(지정된 파일로 인쇄하는데).log file.

스프링 부트가 콘솔에 로그 메시지를 인쇄하지 못하도록 하는 구성이 있습니까?

봄 부츠는 기본 제공됩니다.logback로거. 기본적으로 콘솔에 인쇄하도록 구성됩니다.

다음을 덮어써야 합니다.logback환경설정(사용자 환경설정logback.xml클래스 경로에 있음)이는 여기에 설명되어 있습니다 - 섹션 66.1

여기서 읽은 로그백 로깅을 비활성화하는 방법 -

보다시피 당신은 가치를 제공해야 합니다.OFF...예를 들어 다음과 같습니다.

<configuration>
  <include resource="base.xml" />
   .
   .
  <property name="root.level.console" value="OFF" />
</configuration>

참고: 여기서 일반적인 생각은 spring-boot에서 제공되는 로그백 구성이 최소화된다는 것입니다.사용자 고유의 로그백 구성을 제공하고 기존 구성을 완전히 덮어쓰는 것이 목적입니다. 예를 들어 로그 파일 추가자만 구성하여 사용자 고유의 로그백 구성을 제공하는 것이 일반적인 접근 방식이어야 합니다.

포함하다file-appender.xml그리고 아닌console-appender다음과 같은 구성으로logback-spring.xml:

<?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <include resource="org/springframework/boot/logging/logback/defaults.xml" />
        <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>
        <include resource="org/springframework/boot/logging/logback/file-appender.xml" />
        <root level="INFO">
            <appender-ref ref="FILE" />
        </root>
    </configuration>

또한 추가해야 합니다.logging.file당신에게application.properties

이는 스프링 부트 설명서(http://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html 에 언급된 내용을 준수합니다.

logback.xml에서 콘솔 구성을 제거하려고 했습니다.하지만 여전히 콘솔에 로그인하고 있었습니다.그래서 제가 한 것은 스프링부트를 통해 로깅 구성에 추가되는 appender를 제거한 것입니다.따라서 콘솔에서 springboot 로깅을 중지하고 로그 파일을 분리할 수를 분리할 수 있습니다.응용프로그램 끝에 아래 행을 추가합니다. 특정 추가 기능이 추가됩니다.사용자 지정 추가 프로그램이 이러한 추가 프로그램 이름과 일치하지 않아야 합니다.그것은 나에게 효과가 있었다.

// get instance of your log4j instance
Logger logger = LogManager.getRootLogger();
logger.removeAppender("CONSOLE"); // stops console logging
logger.removeAppender("LOGFILE"); // stops file logging

비슷한 논의가 여기서 확인할 수 있습니다.

내 logback.xml은 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <include resource="org/springframework/boot/logging/logback/defaults.xml" />
  <include resource="org/springframework/boot/logging/logback/file-appender.xml" />

  <root level="INFO">
    <appender-ref ref="FILE" />
  </root>
</configuration>

여전히 문제가 발생하는 경우:나는 그 주제에 대한 많은 토론을 읽었고 그것은 나에게 전혀 효과가 없었습니다.불행히도 처음으로 logback.xml 파일을 만들었을 때 정말 어리석은 실수를 했습니다.파일 이름의 시작 부분에 공백이 추가되었습니다.따라서 파일은 사용되지 않았습니다.파일 이름을 한 번 더 보고 "src/main/resources"에 파일을 추가한 후 속성 파일에서 "logging.config" 항목을 제거합니다.

최신 1.3.1 릴리스에서 테스트되었으며 최신 릴리스의 base.xml이 defaults.xml로 이름이 변경되었습니다.

여기에 대답

언급URL : https://stackoverflow.com/questions/31935151/prevent-spring-boot-from-printing-logs-to-console

반응형