咱们使用 Spring Boot 官方的 spring-boot-starter-logging 作为日志依靠,在 pom.xml 文件中加入依靠就能够开箱即用:

<dependency>
<gr1 @ e aoupId>org.springframework.boO x j ^ # Y Y *ot</groupId>
<artifactId>spring-boot-starter} } 0 X C Y U-logging</ar 8 m N v 7 %tifactId>
</dependency>

控制台调试

当咱们在开发的时分,难免需要在控制台自定义输出一些东西来追踪,能够经过在类上增加w . J @Slf4j 注解E n – ?,然后在方法l : , 3 ` e 4 U内部就能够使用注入的 lz P e W m mog 变量n } 8输出调试:

log.warn("xfly dp N 8 P cemo.........");

注意默许是只要 ERROR、WARN、INFO 三种等级的日志会输出到控制台,在开发的时分能够把等级设置为 DEBUG,在 application-dev.yml 文件中K t _ R ( g m ; c设置O v g | o log~ k A – ) D mging.level 为K K q U C ? debug 即_ Y F

自定义日志格局

自己在控制台输出的调试格局倒无所谓,但是咱们往往8 C n需要把日志记载到文件中,尤其是线上环境,关于排错分析都非常有用,日志这块也有非常老练的重型计划,咱们暂时用 Spring 内置的 Logback 即可,更适合现在的这个项目。

装备 Logback 只需要在 resources 目录下新建一个 logback-spring.xml 文件,在其中装备:

<?xml version=| ( I y 2"1.0" encoding="UTF-8" ?>
<configuration>
<springPropertv u | % iy scope="context" name="logging.file.pathX R 1 ~ 8" source="logging.file.path"/>
<contextName&s O V # c - A Vgt;wxbox</contextName>
&lv h r N U Xt;appender name="consoleLog" class="ch.qos.lox K vgback.c~ u 3ore.ConsoleAppender">
<encoder class="ch.qos.logback.class7 O j 5 _ c V ; mic.encoder.PatternLayoutEncoder">B 3 d 7
<pattern>%yellow(%d{yyyy-MM-dR | { @ bd HH:mm:ss}) %red([%thread]) %highlight(%/ J s-5level) %cyan(%logger{50}) - %magec . gnta(%msg) %n</pattern>
<charset>UTF-8</cG ? c J D fharset>
</encoder>
</appender>
<2 W g f L 7appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>DENY</onMatcp O 4 I _ U E lh>
<onMismatch>ACCEPT</onMismatch>
</filter>
<encoA 6 # w 5 $ W x $der class="ch2 G y = g 6.qos.logback.classic.encC # J 4 z z + o loder.PatternLayoutEncoder">
<pattern>
%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n
</pattern&^ a E | ! . C Ngt;
<charset>UTF-8</charset>
</encoder>
<rollingPolicy class="chU 6 Q Z N.qos.logback.core.u 1 F b a [ . HrollM * : R { 6ing.TimeBasedRollingPolicy">
<fileNamePattern>${logging.file.path}/wxbox.info.%d{yyyy-MM-dd}.log</fileNamePattern>
<MaxT j c FHistory>90</MaxHistory>a ; , 0 D # q
<tota0 . y W ` 4 @ S |lSizeCap>1GB</totalSizeM ) ^ s zCapD Z 0 7 L>
</rollingPolicy>
</appM * )ender>
<appender name="fileErrorLog" class="ch.qg * c # 3 d = g Tos.logback.core.rolling.RollingF9 h J f w b A H 2ileAppender"&X  ^ e lgt;
<filter ck ; : b = llass="ch.qos.logback.4 z xclassic.filter.ThresholdFilter">
<level>ERROR&l) _ 4 O (t;/level>
</filter>
<encoder>
<pattern>
%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n
</pattern>
</encoder>
<rollingG M |PolH :   ] ~ r 6 |icy class="ch.qos.logback.core.rolling.TimeBasedRollU  F s } OingPolicy"&g_ / u F 2 ? A ct;
&p : C q j [ plt;fileNamePattern>${logging.B u { afile.pathz T /  e t}/wxbox.error.%d{yyyy-MM-dd}.log</fileNamePattern>
<MaxHistor% { ~ P M _ 2y>90</MaxHistory>
</rollingPolicy>
</appender>
<root level="info">
<apz z r { X  C 1pender-ref ref="consoleLog"/>
<appender-rN G } mef ref="fileInfoLog"/&gG F ~ O a a % ? vt;
&+ # .lt;appender-ref ref="fileErrorLog"/>
&l; c N o -t;/ro? = O L U  q = [ot>
</configuration>

大约说明一下几大块内容:

• 经过 springProperty 标签声明并创立了一个 logging.file.path 变量,对应在 application.yml 中的 loF Y k ~gging.file.path 装备项,这样下面的标签里都能够使用这个变量,实现动态装备的意图。

• 每一个 appender 标签都能够看作一台打( O T h k + : f x印机,能够是用于控制台输出的 Co8 ! n Q t + 9 knsoleAppender,也能够是D s 8 9 * S ;用于文件输出的 RollingFIleAppender。

• 每一个 appender 都能够~ A D经过 pattern 标签设置输出格局,关于控制台输出能够额外设置色彩G J ! Z a = b n },文件输出的话就没有色彩不色彩q T g e了,格局有非常多,能够去官网文档看看。

• 关于 RollingFIleAppender 能够设置滚动战略,比如按天为单位记载日志,记载的最大天数,单文件的最大文件3 1 p – &巨细等。

• 最终经过 root 标签创立这些 appender。