제목 : 봄 부팅日志
카탈로그 : 진정한
날짜 : 2019년 9월 23일 13시 35분 41초
자막 : SpringBoot日志
헤더 IMG는 "/img/article_header/article_header.png"
태그 : 봄 부팅
가지 범주를 :
- SpringBoot
A. 로깅 프레임 워크
시장 로깅 프레임 워크;
7월, JCL, 제이 보스 로깅, logback, log4j에, log4j2, SLF4J ...
외관 로그 (로그 추상화 계층) | 로그인 달성 |
---|---|
Log4j를 7월 (java.util.logging의) Log4j2 Logback |
올바른 실행을 선택하는, 외관 (추상 계층)의 좌측으로부터 선택되고;
로그 외관 : SLF4J;
실현 로그 : Logback을;
SpringBoot : 맨 아래 계층은 스프링 프레임 워크, 스프링 프레임 워크의 기본 JCL입니다
SpringBoot 선택은 SLF4J와 logback 있습니다
이 .SLF4J를 사용하여
시스템 사용 방법 1. SLF4J
로깅 방법은 클래스 메소드 로그 추상화 계층 안에 20 호출을 기록 구현 직접 호출 할 수 없습니다;
SLF4J는 항아리 항아리와 logback을 달성하기 위해 시스템에 도입
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(HelloWorld.class);
logger.info("Hello World");
}
}
아이콘 :
구현 프레임 워크는 각 로그는 자체 구성 파일이 있습니다. SLF4J, 구성 파일을 사용한 후 또는 자체가 프로파일 메이크업 로깅 구현 프레임 워크.
기존의 2. 문제
동일한 프레임 시스템에서 로그의 복수의 존재 :
항목 A (SLF4J + logback) : 봄 (평민 로깅), 최대 절전 모드 (JBoss의 로깅), MyBatis로 같은
우리는 통합 로깅, 심지어는 다른 프레임을 할 수있다, 당신은 SLF4J 출력을 사용할 수 있습니다.
SLF4J에 통합 된 시스템으로 모든 로그를 얻는 방법 :
- 다른 시스템 로그 파일을 제외 할
- 로깅 턴 디쉬의 원래 프레임을 대체
- 우리는 SLF4J 다른 구현을 가져
세 .SpringBoot 로그의 관계
가장 기본적인 로그 관련 의존 :
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.1.8.RELEASE</version>
<scope>compile</scope>
</dependency>
SpringBoot는 로깅에 사용 :
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
<version>2.1.8.RELEASE</version>
<scope>compile</scope>
</dependency>
기본 종속 관계 :
요약 :
- SpringBoot의 하층은 SLF4J + logback 방식으로 로그를 사용
- 다른 로그 SLF4J로 대체 할 SpringBoot
- 또한 중간 패키지는 원래 로깅 프레임 워크를 대체
- 우리가 다른 프레임 워크를 도입 할 경우,이 프레임 워크는 기본 로그 아웃을 제거해야합니다.
SpringBoot 자동으로 모든 로그에 적응하고, SLF4J + logback 로그, 다른 프레임의 도입, 프레임 필요는 종속 프레임 제외 로그 방식의 바닥을 사용합니다.
IV. 사용 로그
1. 기본 구성
SpringBoot 도움이 우리가 기본 로그를 구성
// 记录器
Logger logger = LoggerFactory.getLogger(getClass());
@Test
public void contextLoads() {
// 日志的级别
// 日志由高到低 trace<debug<info<warn<error
// 可以调整输出的日志级别,日志就只会在这个级别
logger.trace("这是trace日志。。。。");
logger.debug("这是debug日志。。。");
// SpringBoot默认给我们使用的是info级别,没有指定级别的就用SpringBoot默认规定的级别,root级别
logger.info("这是info日志。。。");
logger.warn("这是warn日志。。");
logger.error("这是errorr日志");
}
로그 파일 출력 형식 :
로그 출력 형식 :
-
% D는 날짜와 시간을 나타냅니다
-
% 스레드는 스레드의 이름을 나타냅니다
-
% -5level : 화면 왼쪽에서 레벨 5 문자 폭
-
로거 % {50}의 기간에 따라 나누어 50 자로 로거 이름을 나타낸다.
-
% 메시지 : 로그 메시지,
-
% N은 개행이며
比如 : - % MSG % N [% 스레드] % -5level 로거 % {50} {%의 D : mm ss.SSS HH를 YYYY-MM-DD는}
logging.file | logging.path | 예 | 기술 |
---|---|---|---|
(없음) | (없음) | 콘솔에서 만 출력 | |
파일 이름을 지정합니다 | (없음) | my.log | my.log로 출력 로그 파일 |
(없음) | 지정된 디렉토리 | 는 / var / log | 지정된 디렉토리에있는 파일에 Spring.log 출력 |
2. 지정 배치
자신의 구성 파일, springboot이 클래스 경로 지방 분권의 기본 구성을 사용하지의 각 로그 프레임
시스템 로깅 | 사용자 정의 |
---|---|
Logback | logback-spring.xml , logback-spring.groovy , logback.xml 또는logback.groovy |
Log4j2 | log4j2-spring.xml 또는 log4j2.xml |
JDK (자바 백분율 로깅) | logging.properties |
logback.xml : 로깅 프레임 워크를 직접 확인
logback-spring.xml : 로깅 프레임 워크를 직접로드 로그 구성을 분석 SpringBoot에 의해 구성 항목을 로그인 할 수 없습니다, 당신은 SpringBoot이 기능 프로필 고급 사용할 수 있습니다
<springProfile name="staging">
<!-- configuration to be enabled when the "staging" profile is active -->
可以指定某段配置只在某个环境下生效
</springProfile>
예를 들면 :
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<!--
日志输出格式:
%d表示日期时间,
%thread表示线程名,
%-5level:级别从左显示5个字符宽度
%logger{50} 表示logger名字最长50个字符,否则按照句点分割。
%msg:日志消息,
%n是换行符
-->
<layout class="ch.qos.logback.classic.PatternLayout">
<springProfile name="dev">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ----> [%thread] ---> %-5level %logger{50} - %msg%n</pattern>
</springProfile>
<springProfile name="!dev">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ==== [%thread] ==== %-5level %logger{50} - %msg%n</pattern>
</springProfile>
</layout>
</appender>