복붙노트

[SPRING] Spring 부트가 로그를 콘솔에 인쇄하지 못하게 함

SPRING

Spring 부트가 로그를 콘솔에 인쇄하지 못하게 함

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

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

        logging.file= ${logger_path}

내 pom.xml에는 다음이 포함되어 있습니다.

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

응용 프로그램을 시작하면 로깅 메시지가 /tmp/app.log의 파일에 인쇄되지만 문제는 콘솔에 로그 메시지도 인쇄한다는 것입니다. 필자는 로그 파일을 지정했을 때 콘솔에 인쇄하는 이유를 이해하지 못합니다 (지정된 파일에 인쇄하고 있지만).

스프링 부팅이 로그 메시지를 콘솔로 출력하지 못하도록하는 구성이 있습니까?

해결법

  1. ==============================

    1.스프링 부트는 내장 된 로그백 로거와 함께 제공되며 기본적으로 콘솔에 프린트되도록 구성됩니다.

    스프링 부트는 내장 된 로그백 로거와 함께 제공되며 기본적으로 콘솔에 프린트되도록 구성됩니다.

    로그백 구성을 겹쳐 써야합니다 (클래스 경로에 고유 한 logback.xml 제공). 이것은 여기에 설명되어 있습니다 - 섹션 66.1

    어떻게 로그백 로깅을 비활성화하려면 여기를 읽으십시오 -

    당신이 볼 수 있듯이 OFF 값을 제공해야합니다.

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

    참고 : 일반적인 생각은 스프링 부트에서 오는 로그백 구성이 최소한이라는 것입니다. 사용자가 직접 로그백 구성을 제공하고 기존 로그 덮어 쓰기 설정을 완전히 덮어 쓰려고합니다. 로그 파일 - 어 펜더 만 구성한 나만의 로그백 구성을 제공합니다. 이는 일반적인 접근 방식입니다.

  2. ==============================

    2.logback-spring.xml에 다음과 같은 구성을 가진 console-appender가 아닌 file-appender.xml을 포함 시키십시오 :

    logback-spring.xml에 다음과 같은 구성을 가진 console-appender가 아닌 file-appender.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).

  3. ==============================

    3.logback.xml에서 콘솔 구성을 제거하려고했습니다. 하지만 콘솔에 계속 로그인했습니다. 그래서 내가 한 것은 springboot에 의해 로깅 설정에 추가 된 appender를 제거한 것입니다. 따라서 우리는 콘솔에서 springboot 로깅을 중단하고 로그 파일을 분리 할 수 ​​있습니다. 특정 appenders가 추가 된 응용 프로그램의 끝에 아래의 라인을 추가합니다. 사용자 정의 appender는 이러한 appender 이름과 일치하지 않아야합니다. 그것은 나를 위해 일했습니다.

    logback.xml에서 콘솔 구성을 제거하려고했습니다. 하지만 콘솔에 계속 로그인했습니다. 그래서 내가 한 것은 springboot에 의해 로깅 설정에 추가 된 appender를 제거한 것입니다. 따라서 우리는 콘솔에서 springboot 로깅을 중단하고 로그 파일을 분리 할 수 ​​있습니다. 특정 appenders가 추가 된 응용 프로그램의 끝에 아래의 라인을 추가합니다. 사용자 정의 appender는 이러한 appender 이름과 일치하지 않아야합니다. 그것은 나를 위해 일했습니다.

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

    4.유사한 토론이 여기에서 찾아 낼 수있다.

    유사한 토론이 여기에서 찾아 낼 수있다.

    내 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"항목을 제거하십시오.

  5. ==============================

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

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

    여기에 답변 해주세요.

  6. from https://stackoverflow.com/questions/31935151/prevent-spring-boot-from-printing-logs-to-console by cc-by-sa and MIT license