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 = DEBUG
및 logging.level.org.hibernate = DEBUG
스프링 프레임 워크 웹 및 최대 절전 모드 만의 클래스에 대한 로깅 수준을 설정합니다.
로깅 파일 위치를 설정하려면
logging.file = /home/ubuntu/myproject.log
debug=true
application.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
더 많은 유연성을 제공하는 멋진 기능입니다.
'IT' 카테고리의 다른 글
.NET으로 특정 확장자를 가진 임시 파일을 어떻게 만들 수 있습니까? (0) | 2020.03.31 |
---|---|
MySQL에서 '서명되지 않은'은 무엇을 의미하며 언제 사용해야합니까? (0) | 2020.03.31 |
docker-compose로 단일 컨테이너를 다시 시작하는 방법 (0) | 2020.03.31 |
ASP.NET 웹 API를 사용하여 세션에 액세스 (0) | 2020.03.31 |
Java에서 힙 크기 늘리기 (0) | 2020.03.31 |