programing

스프링 부트:application.properties를 사용하여 로깅 수준을 설정하려면 어떻게 해야 합니까?

lastmoon 2023. 3. 8. 21:44
반응형

스프링 부트:application.properties를 사용하여 로깅 수준을 설정하려면 어떻게 해야 합니까?

이것은 매우 간단한 질문이지만, 저는 정보를 찾을 수 없습니다.
지식이 한 것 (Java 프프 ()))))))))))))))))))))))))))))))

application.properties를 사용하여 해야 ?
로그 파일 위치 등

업데이트: Spring Boot v1.2.0 이후.RELEASE, 설정application.properties ★★★★★★★★★★★★★★★★★」application.yml해당됩니다.참조 가이드의 「로그 레벨」섹션을 참조해 주세요.

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

스프링 부츠이를 위해서는 로깅 프레임워크(log4j, logback)의 일반 구성을 사용해야 합니다. 파일을 추가합니다.log4j.xml ★★★★★★★★★★★★★★★★★」logback.xml에 접속합니다.src/main/resources디렉토리 및 설정을 원하는 대로 할 수 있습니다.

" " " 를 합니다.--debug명령줄에서 응용 프로그램을 시작할 때 사용합니다.

또한 Spring Boot은 logback.xml 파일에 간단히 포함할 수 있는 base.xml 파일을 색칠하는 등 로그백을 설정하기 위한 좋은 출발점을 제공합니다(이것은 Spring Boot의 기본 logback.xml에서도 권장됩니다).

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

이를 수행하려면 application.properties를 사용합니다.

logging.level.=ERROR->> 에러로

logging.level.=DEBUG->을 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이 질문이 처음 제기된 이후 업데이트된 문서를 참조하십시오.

예:

logging.level.root=WARN

스프링 부트 중인 경우 application.properties 파일에 다음 속성을 직접 추가하여 로깅 수준을 설정하고 로깅 패턴을 맞춤화하고 로그를 외부 파일에 저장할 수 있습니다.

이들은 최소 << maximum minimum minimum minimum minimum minimum minimum levels levels levels levels 。

소등 << 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

이 「어플리케이션명」이라고.com.company.myproject의 application.properties의 application.properties의 .properties의 application.properties의 application.properties의 .properties에 따라 내 의 로깅 수준을 설정할 수 있습니다

logging.level.com.company.my project = DEBUG

logging.level.org.springframework.web = DEBUG ★★★★★★★★★★★★★★★★★」logging.level.org.hibernate = DEBUG는 Spring 프레임워크 웹 및 휴지 상태 클래스의 로깅 수준을 설정합니다.

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

로깅을 수행합니다.파일 = /home/ubuntu/myproject.log

을 받고 adding the use at adding at use the plused at at us adding dave syer tip to lovedebug=true to 、 logging . application . properties debug debug debug debug debug debug debug debug debug debug debug debug로깅을 하게 합니다.

매뉴얼에 따르면 Java 패키지에 따라 다양한 로깅 수준을 가질 수 있습니다.

 logging.level.com.mypackage.myproject=WARN
 logging.level.org.springframework=DEBUG
 logging.level.root=INFO 

이것은 곧 을 의미합니다.

  • 의 커스텀 ★★★★★★★★★★com.mypackage.myproject WARN 로깅 수준이 적용됩니다.
  • package의 org.springframework DEBUG 로깅 수준이 적용됩니다.
  • 기타 모든 패키지에 대해 INFO 로깅 레벨이 적용됩니다.

또한 서로 다른 Java 패키지를 그룹화하여 그룹의 모든 패키지에 대해 동일한 로깅 수준을 한 줄에 사용하도록 시스템에 지시할 수도 있습니다.

위의 예에서는 다음과 같이 할 수 있습니다.

 logging.level.root=INFO 
 logging.level.org.springframework=DEBUG
 
 logging.group.myCustomGroup = com.mypackage.myproject, com.otherpackage.otherproject, com.newpackage.newproject
 logging.level.myCustomGroup=WARN

이것은 패키지가

  • com.mypackage.myproject
  • com.otherpackage.otherproject
  • com.new package.신규 프로젝트

모두 로깅 수준 WARN이 적용됩니다.

예를 들어 log4j와 같은 다른 로깅 프레임워크를 사용하는 경우 가장 쉬운 방법은 스프링 부트 자체 로깅을 비활성화하고 자체 로깅을 구현하는 것입니다.이렇게 하면 1개의 파일(여기서는 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>

첫 번째 종속성은 이미 있고 나머지 두 개만 필요할 수 있습니다.4j log4j 만을j 。
이것으로 log4j 구성 파일 내에서 부팅에 대한 로깅을 구성할 수 있습니다.

Springboot 2에서는 다음과 같이 환경변수를 사용하여 루트 로깅 수준을 설정할 수 있습니다.

logging.level.root=DEBUG

또는 다음과 같이 패키지에 대한 특정 로깅을 설정할 수 있습니다.

logging.level.my.package.name=TRACE
logging:
  level:
    root: INFO
    com.mycompany.myapp: DEBUG

로그 레벨을 DEBUG로 설정하면 응용 프로그램을 시작하는 동안 모든 것이 표시됩니다.

logging.level.root=DEBUG

다음과 같이 명령줄을 통해 DEBUG 로그를 켤 수도 있습니다.

java -jar <jar file> --debug

참고로 Spring Boot v1.2.0에 관한 공식 매뉴얼.릴리스 및 스프링 v4.1.3.릴리즈:

로깅을 변경하면 다양한 로거의 수준을 설정할 수 있는 경우 application.properties에서 다음과 같이 "logging.level" 접두사를 사용하여 변경할 수 있습니다.

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

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

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

기존 답변은 훌륭합니다.로그를 그룹화하고 그룹 전체의 로깅 수준을 설정할 수 있는 새로운 스프링 부트 기능을 공유하려고 합니다.

문서 예:

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

유연성이 뛰어난 기능입니다.

자세한 내용을 설정하려면 로그 구성 파일 이름 "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=을 쓸 수 있습니다.경고하지만 여기서 문제는 devtools 의존관계를 추가하더라도 다시 시작해야 한다는 것입니다.속성 파일에서 값을 변경하면 자동으로 검출할 수 없습니다.이 제한을 위해 pom.xml에서 액튜에이터를 추가하고 url bar http:/localhost:8080/logers/ROOT 또는 postman 클라이언트에 표시된 바와 같이 로거 레벨을 전달할 수 있습니다.http://localhost:8080/comers/com.mycompany 및 본문에서는 다음과 같은 json 형식을 전달할 수 있습니다.

{
  "configuredLevel": "WARN"
}

현재의 설정에서는 다음과 같이 application.yaml에 정의되어 있습니다.

logging:
  level:
    ROOT: TRACE

spring-boot: 2.2.0.RELEASE를 사용하고 있습니다.이와 같이 TRACE 레벨을 가지는 임의의 패키지를 정의할 수 있습니다.

이클립스 IDE가 발생하여 프로젝트가 마비된 경우 변경 사항을 반영하기 위해 프로젝트를 정리하고 빌드해야 합니다.

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

반응형