1、SLF4J(Simple logging Facade for Java)
slf4j 供了统一的日志使用接口,使用时只需要按照其提供的接口方法进行调用即可,由于它只是一个接口,所以还需一个日志框架将最终日志名称,路径,日志的格式、记录级别、输出方式等都要通过接口绑定的具体的日志系统来实现,这些具体的日志系统就有log4j,logback,java.util.logging等,它们才实现了具体的日志系统的功能。
2、logback
logback的整体性能比log4j较佳,而且原生实现slf4j接口。
在resource路径下新建![]()
依赖jar包 ![]()

<property name="LOG_HOME" value="/data/log/bcp"/> //日志路径
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>[%date] [%-5level] [%class] - [%msg]%n</pattern>
</encoder> //日志输出格式
</appender>
<appender name="ALLFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/test.log</file> //日志名称
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/demo.%d{yyyy-MM-dd}.%i.log</fileNamePattern> //日志保存最大文件后命名规则
<maxHistory>2</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>50MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>[%date] [%-5level] [%logger] - [%msg]%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<appender name="ERROFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/error.log</file>
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/error.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxHistory>7</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>50MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<encoder>
<pattern>[%date] [%-5level] [%logger] - [%msg]%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!--
logger主要用于存放日志对象,也可以定义日志类型、级别
name:表示匹配的logger类型前缀,也就是包的前半部分
level:要记录的日志级别,包括 TRACE < DEBUG < INFO < WARN < ERROR
additivity:作用在于children-logger是否使用 rootLogger配置的appender进行输出,
false:表示只用当前logger的appender-ref,
true:表示当前logger的appender-ref和rootLogger的appender-ref都有效
-->
<logger name="test" level="debug" />
<!-- Spring framework logger -->
<logger name="org.springframework" level="info"></logger>
<logger name="org.spring.springboot.dao" level="debug"/>
<logger name="com.apache.ibatis" level="DEBUG"/>
<logger name="java.sql.Connection" level="DEBUG"/>
<logger name="java.sql.Statement" level="DEBUG"/>
<logger name="java.sql.PreparedStatement" level="DEBUG"/>
<root level="INFO">
<!--<appender-ref ref="STDOUT"/>-->
<appender-ref ref="ALLFILE"/>
<appender-ref ref="ERROFILE"/>
</root>3、代码引用
import org.slf4j.Logger; import org.slf4j.LoggerFactory;
/** * 记录日志 */ private Logger logger = LoggerFactory.getLogger(this.getClass());
logger.info("tt: add= {}", JSON.toJSONString(test));版权声明:本文为lvzhihuanj原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。