springBoot日志(logback)配置以及使用
1.简介
刚从.net转为java,学习了springBoot,想起了当时工作中用.net记录日志,然后想用springBoot记录一下日志,从网上看了很多大神写的各种方法,挑了一种,自己用明白了,特意记录一下!
2.配置
因为logback是springBoot自带的日志工具,所以不需要单独添加依赖(不知道为什么不需要的,去maven配置文件里面进到springboot的父项目配置下自行查看,节点是 parent ),直接开始配置。
2.1创建配置文件
在resources目录下直接创建名为logback-spring.xml的文件即可。
2.2编写配置文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--定义日志文件的存储地址,使用绝对路径-->
<!--<property name="LOG_HOME" value="d:/logs/govern-config/"/>-->
<!--生成日志的文件夹名称-->
<springProperty scope="context" name="LOG_HOME" source="logging.rootpath" defaultValue="logs/"/>
<!--生成的文本文件前缀-->
<springProperty scope="context" name="SERVER_NAME" source="spring.application.name" defaultValue="ZYInterface"/>
<springProperty scope="context" name="PORT" source="server.port" defaultValue=""/>
<!--生成的文本文件编码格式-->
<springProperty scope="context" name="ENCODING" source="logging.encoding" defaultValue="GBK"/>
<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 name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{HH:mm:ss.SSS}){faint} %clr(%-5level) - %clr(%-40.40logger{39}){blue} %clr(:){faint} -l%-3L %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!-- Console 控制台输出设置 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
<charset>${ENCODING}</charset>
</encoder>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<fileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd}/${SERVER_NAME}-%d{yyyy-MM-dd}-${PORT}.log</fileNamePattern>
</rollingPolicy>
<encoder>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<!--日志文件输出的信息格式-->
<pattern> %d{ HH:mm:ss.SSS } %-5level -> %msg%n</pattern>
<!-- <pattern> %d{ HH:mm:ss.SSS } -> %-5level %-40.40logger{39} Line:%-3L - %msg%n</pattern>-->
<!--<pattern> > %d{HH:mm:ss.SSS} %-5level %-40.40logger{39} Line:%-3L - %msg%n</pattern-->>
</encoder>
</appender>
<!-- 异步输出 -->
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>0</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>512</queueSize>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref ref="FILE"/>
</appender>
<!--输出等级和需要输出在哪些地方(ref的内容是上方配置的节点的name)-->
<logger name="com.test.newdemo" level="DEBUG">
<appender-ref ref="FILE"/>
<appender-ref ref="CONSOLE"/>
</logger>
<!-- <root level="ERROR">-->
<!-- <appender-ref ref="FILE"/>-->
<!--<!– <appender-ref ref="FILE"/>–>-->
<!-- <appender-ref ref="CONSOLE"/>-->
<!-- </root>-->
</configuration>
3.使用方法
3.1 需要引入的类
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
3.2 具体的操作方法
//对日志类的引用
private final Logger log = LoggerFactory.getLogger(this.getClass());
//日志的记录
log.info("日志记录");