Spring Boot 中日志使用

Spring Boot 中日志使用 配置日志输出到文件

# 输出到指定文件
logging.file=./logs/application.log

# 输出到指定目录下(会写入到 spring.log 中)
logging.path=./logs当同时存在 logging.path 和 logging.file 时 logging.path 无效

日志中添加信息

向日志中添加自定义信息可以使用 MDC类来实现
- 配置文件

logging.pattern.level=user:%X{user} %5p

类:

org.apache.log4j.MDC

org.jboss.logging.MDC

org.slf4j.MDC

MDC.put("user", "Hello");

输出结果

2018-01-18 23:55:10.836 user:Hello  INFO 7011 --- [nio-8080-exec-1] cn.com.hellowood.log.LogController        : log 2

logback 配置 标签属性

<configuration>

scan: 当属性设置为 true 时, 配置文件如果发生变化会被重新加载,默认为true

scanPeriod: 设置监测配置文件是否修改的时间间隔,默认单位是毫秒,默认时间间隔1分钟

debug:当属性设置为true时,将打印logback内部的日志信息,默认为 false

<root>:用来指定最基础的日志输出级别

level:设置日志打印级别,大小写不敏感,可以是TRACE,DEBUG,INFO,ERROR,ALL,OFF,默认DEBUG

<root level="debug">
  <appender-ref ref="console" />
  <appender-ref ref="file" />
</root>

<contextName>:上下文名称,默认为default,用于区分应用程序,一般改为项目名称,可以通过 %contextName 添加到日志中

<property>:用来定义变量值的标签

name:变量的名称

value:变量的值
定义的变量可以通过${}使用

<appender>:用来格式化日志输出节点

name:appender 的名称

class:用来指定输出策略,通用的有控制台输出和文件输出

子标签 <layout>和<encoder>作用一样,但是<layout>仅仅是将 event 事件变成字符串,而 <encoder>将 event事件变成 byte数组并输出到文件中

<logger>:指定某个包或类的日志属性

name:类或包名

level:日志级别

addtivity:日志是否向上级传递打印,默认是 true

子节点<appender-ref>:用于指定输出到那个 appender,用ref属性指定

<configuration>
    ...

<!--类名或包名 -->
    <logger level="DEBUG" additivity="false">
        <appender-ref ref="CONSOLE"/>
    </logger>
</configuration>

此时会打印在 CONSOLE上,如果将additivity改为true,则CONSOLE和root各会打印一次

<springProfile>:设置不同环境下启用不同的规则

name :环境的名称,可以是test, dev, prod, staging等;和 application-${env}.properties一直即可

<!-- 环境用逗号隔开 -->
<springProfile>
    <logger level="DEBUG" additivity="false">
        <appender-ref ref="CONSOLE"/>
    </logger>
</springProfile>

<springProperty> :通过 Spring 的 Enviroment获取属性,用于从application.properties读取参数,作用和 <property>一样

scope:读取属性的范围,一般为context

name:属性名称

source:application.properties文件里的配置名称,必须是串的形式(app.property)

defaultValue:默认值

配置文件

常用配置

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">

<springProperty value="SpringBoot-Log/out/logs"/>
    <contextName>SpringBootLog</contextName>
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
    <property value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%21.21t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
    <property value="${FILE_LOG_PATTERN:-%d{yyyy-MM-dd HH:mm:ss.SSS} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%21.21t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>

<!--输出到控制台 ConsoleAppender-->
    <appender>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/d001da93e77c93770a09a2c510f84048.html