IT

Spring Boot : application.properties로 로깅 레벨을 어떻게 설정할 수 있습니까?

lottoking 2020. 3. 31. 08:26
반응형

Spring Boot : application.properties로 로깅 레벨을 어떻게 설정할 수 있습니까?


이것은 매우 간단한 질문이지만 정보를 찾을 수 없습니다.
(아마도 Java 프레임 워크에 대한 지식이 심하게 부족합니다)

application.properties로 로깅 레벨을 어떻게 설정합니까?
로그 파일 위치 등?


업데이트 : 봄 부팅 v1.2.0.RELEASE부터의 설정 application.properties또는 application.yml적용 않습니다. 참조 안내서 로그 수준 섹션참조하십시오 .

logging.level.org.springframework.web: DEBUG
logging.level.org.hibernate: ERROR

이전 버전의 Spring Boot에서는 사용할 수 없습니다. 로깅 프레임 워크 (log4j, logback)에 대한 일반 구성 만 사용하면됩니다. 적절한 구성 파일 ( log4j.xml또는 logback.xml)을 src/main/resources디렉토리에 추가하고 원하는대로 구성하십시오.

--debug명령 행에서 애플리케이션을 시작할 때 지정하여 디버그 로깅을 사용할 수 있습니다 .

Spring Boot는 logback이 XML을 포함하여 baseback.xml 파일을 채색하는 등 기본 설정을 구성 할 수 있는 좋은 출발점을 제공 합니다. (이것은 Spring Boot 의 기본 logback.xml 에서도 권장됩니다 .

<include resource="org/springframework/boot/logging/logback/base.xml"/>     

application.properties를 사용하여이를 수행 할 수 있습니다.

logging.level.=ERROR-> 루트 로깅 레벨을 오류로 설정합니다.
...-
logging.level.=DEBUG> 루트 로깅 레벨을 DEBUG로

logging.file=${java.io.tmpdir}/myapp.log설정합니다.-절대 로그 파일 경로를 TMPDIR / myapp.log로

설정합니다. 프로파일을 사용한 로깅과 관련된 정상적인 기본 application.properties 세트는 다음과 같습니다. application.properties :

spring.application.name=<your app name here>
logging.level.=ERROR
logging.file=${java.io.tmpdir}/${spring.application.name}.log

application-dev.properties :

logging.level.=DEBUG
logging.file=

자주 사용하는 IDE 내에서 개발할 때는 -Dspring.profiles.active=dev앱의 실행 / 디버그 구성에 VM으로 인수를 추가하기 만하면 됩니다.

출력을 로그 파일에 쓰지 않고 개발 중 프로덕션 및 디버그 로깅에만 오류가 발생합니다. 이것은 개발하는 동안 성능을 향상시킬 것입니다 (그리고 SSD 드라이브를 몇 시간 동안 절약하십시오).


루트 로깅 수준 을 설정하는 올바른 방법 은 속성을 사용하는 것 logging.level.root입니다. 이 질문이 처음 제공된 이후 업데이트 된 documentation을 참조하십시오 .

예:

logging.level.root=WARN

응용 프로그램의 패키지 이름이로 가정합니다 com.company.myproject. 그런 다음 아래 application.properties 파일에서 프로젝트 내부의 클래스에 대한 로깅 레벨을 설정할 수 있습니다.

logging.level.com.company.myproject = DEBUG

logging.level.org.springframework.web = DEBUGlogging.level.org.hibernate = DEBUG스프링 프레임 워크 웹 및 최대 절전 모드 만의 클래스에 대한 로깅 수준을 설정합니다.

로깅 파일 위치를 설정하려면

logging.file = /home/ubuntu/myproject.log


debug=trueapplication.properties에 추가 하면 실제로 디버그 로깅을 사용할 수 있기 때문에 Dave Syer 팁을 좋아 하십시오.


Spring Boot에있는 경우 application.properties 파일에 다음 특성을 직접 추가 하여 로깅 레벨을 설정하고 로깅 패턴을 사용자 정의하며 외부 파일에 로그를 저장할 수 있습니다.

이들은 다른 로깅 수준과 최소 << 최대의 순서입니다.

OFF << FATAL << ERROR << WARN << INFO << DEBUG << TRACE << ALL

# To set logs level as per your need.
logging.level.org.springframework = debug
logging.level.tech.hardik = trace

# To store logs to external file
# Here use strictly forward "/" slash for both Windows, Linux or any other os, otherwise, its won't work.      
logging.file=D:/spring_app_log_file.log

# To customize logging pattern.
logging.pattern.file= "%d{yyyy-MM-dd HH:mm:ss} - %msg%n"

이 링크를 통해 로그를보다 생생하게 사용자 정의하십시오.

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html


예를 들어 log4j와 같은 다른 로깅 프레임 워크를 사용하려는 경우 가장 쉬운 방법은 스프링 부츠 자체 로깅을 비활성화하고 자체적으로 구현하는 것입니다. 그렇게하면 하나의 파일 인 log4j.xml (내 경우) 내의 모든 로그 레벨을 구성 할 수 있습니다.

이를 위해서는 pom.xml에 해당 라인을 추가하기 만하면됩니다.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j</artifactId>
</dependency>

아마도 첫 번째 종속성이 있고 다른 두 개만 필요합니다. 이 예는 log4j에만 적용됩니다.
그게 다야, 이제 log4j 구성 파일 내에서 부팅을 위해 로깅을 구성하도록 설정되었습니다!


레코드 : Spring Boot v1.2.0.RELEASE 및 Spring v4.1.3.RELEASE와 같은 공식 문서 :

로깅에 필요한 유일한 변경 사항이 다양한 로거의 레벨을 설정하는 것이라면 "logging.level"접 두부를 사용하여 application.properties에서이를 수행 할 수 있습니다.

logging.level.org.springframework.web: DEBUG logging.level.org.hibernate: ERROR

"logging.file"을 사용하여 콘솔 외에 로그 할 파일 위치를 설정할 수도 있습니다.

로깅 시스템의보다 세밀한 설정을 구성하려면 해당 LoggingSystem에서 지원하는 기본 구성 형식을 사용해야합니다. 기본적으로 Spring Boot는 시스템의 기본 위치 (예 : Logback의 경우 classpath : logback.xml)에서 기본 구성을 선택하지만 "logging.config"속성을 사용하여 구성 파일의 위치를 ​​설정할 수 있습니다.


Eclipse IDE 및 프로젝트가 maven 인 경우 변경 사항을 반영하도록 프로젝트를 정리하고 빌드해야합니다.


더 자세하게 설정하려면 로그 구성 파일 이름 "logback.xml"또는 "logback-spring.xml"을 추가하십시오.

application.properties 파일에서 다음과 같이 입력하십시오.

logging.config: classpath:logback-spring.xml

loback-spring.xml에서 다음과 같이 입력하십시오.

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

        <appender name="ROOT_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">

            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>INFO</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>

            <file>sys.log</file>

            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">


                <fileNamePattern>${LOG_DIR}/${SYSTEM_NAME}/system.%d{yyyy-MM-dd}.%i.log</fileNamePattern>

                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>500MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>

            <encoder>
                <pattern>%-20(%d{yyy-MM-dd HH:mm:ss.SSS} [%X{requestId}]) %-5level - %logger{80} - %msg%n
                </pattern>
            </encoder>
        </appender>


        <appender name="BUSINESS_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>TRACE</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>

            <file>business.log</file>

            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

                <fileNamePattern>${LOG_DIR}/${SYSTEM_NAME}/business.%d{yyyy-MM-dd}.%i.log</fileNamePattern>

                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>500MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>

            <encoder>
                <pattern>%-20(%d{yyy-MM-dd HH:mm:ss.SSS} [%X{requestId}]) %-5level - %logger{80} - %msg%n
                </pattern>
            </encoder>
        </appender>


        <logger name="{project-package-name}" level="TRACE">
            <appender-ref ref="BUSINESS_APPENDER" />
        </logger>

        <root level="INFO">
            <appender-ref ref="ROOT_APPENDER" />
        </root>

    </configuration>

스프링 부트 프로젝트에서 logging.level.root = WARN을 쓸 수 있지만 여기서 문제는 devtools 종속성을 추가해도 속성 파일에 값을 수정하면 자동 감지 할 수없는 속성 파일에 다시 시작해야한다는 것입니다.이 제한 때문에 알았습니다. 이 솔루션은 내가, URL 표시 줄에 우편 배달부 클라이언트에 표시된 다음과 같이 우리의 pom.xml에 액추에이터를 추가하고 로거 수준을 전달할 수 있습니다 전자 에 http : // localhost를 : 8080 / 로거 / ROOT 또는 통해 http : // localhost : 8080 / 로거 / 과 본문에서 아래와 같이 json 형식을 전달할 수 있습니다

{
  "configuredLevel":null
   effectiveLevel":"WARN"

}

기존 답변은 위대합니다. 로그를 그룹화하고 전체 그룹에서 로깅 수준을 설정할 수있는 새로운 스프링 부트 기능을 공유하고 싶습니다.

문서에서 제외하십시오.

  • 로깅 그룹 생성
logging.group.tomcat=org.apache.catalina, org.apache.coyote, org.apache.tomcat
  • 그룹의 로깅 수준 설정
logging.level.tomcat=TRACE

더 많은 유연성을 제공하는 멋진 기능입니다.

참고 URL : https://stackoverflow.com/questions/20485059/spring-boot-how-can-i-set-the-logging-level-with-application-properties

반응형