(1).SLF4J是什么
SLF4J简单的说就是比System.out.println()高级,比Log4j更加好用的输出日志系统。
(2).如何导入SLF4J
首先在application.properties里写上以下代码
具体解释都在代码里,这里就不多加说明。
#导入日志配置文件 logging.config=logback.xml #这里有2个常用选项:trace和error #trace会将该包下所有涉及数据库的操作sql语句都会打印出来。开发阶段选择trace。 #error只会把错误信息打印出来。运营阶段选择成error。 com.example.cxdemo.dao=trace
然后在项目根目录下创建一个文件logback.xml,写上以下代码
<configuration>
<!--
定义一个属性,%date 表示日期,%thread 表示线程名,%-5level 表示级别从左显示5个字符宽度,%logger{36} 表示 Logger 名字最长36个字符,%msg 表示日志消息,%n 是换行符。
-->
<property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />
<!--
定义一个属性,%d表示日期,%i表示第几个日志,当日志文件装满时会再生成一个日志文件。
-->
<property name="LOG_HOME" value="D:/projectLogs/cxdemo/cxdemo.%d{yyyy-MM-dd}.%i.log"/>
<!--
appender当class等于ConsoleAppender时用于控制打印台
-->
<appender name="LOGCONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!--
按照上面配置的LOG_PATTERN格式来打印日志到控制台
-->
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
<!--
appender当class等于RollingFileAppender时用于控制log文件
-->
<appender name="LOGFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--
rollingPolicy当class等于TimeBasedRollingPolicy时用于控制log文件的相关状态
-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--
按照上面配置的LOG_HOME路径来保存日志
-->
<fileNamePattern>${LOG_HOME}</fileNamePattern>
<!--
日志保存时长为30天
-->
<maxHistory>30</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!--
单个日志文件的最大容量,超过则新建日志文件
-->
<maxFileSize>15MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<!--
按照上面配置的LOG_PATTERN来打印日志到日志文件
-->
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
<!--
logger配置日志级别为INFO 层级关系如图: ERROR,WARN,INFO,DEBUG
例如设置INFO后,比INFO低的debug就显示不出来了,等会测试即可知。
-->
<logger name="com.example.cxdemo" level="INFO" />
<!--
root应用上方写好的LOGCONSOLE和LOGFILE
-->
<root level="INFO">
<appender-ref ref="LOGCONSOLE" />
<appender-ref ref="LOGFILE" />
</root>
</configuration>
(3).测试说明
当我们跑起项目时,点开D:\projectLogs\cxdemo文件夹下会发现demo.2018-09-12.0.log文件,这个文件就是用来记录我们的logger日志

回到项目中,使用我们BeginController来测试
在BeginController替换如下代码
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/begin")
public class BeginController {
//创建logger进行打印
private final static Logger logger = LoggerFactory.getLogger(BeginController.class);
@RequestMapping("/beginTest")
public String beginTest() {
String msg="helllo world!";
logger.error("error--------"+msg);
logger.warn("warn----------"+msg);
logger.info("info----------"+msg);
logger.debug("debug--------"+msg);
return msg;
}
}

将项目跑起来,地址栏输入http://localhost:8080/begin/beginTest 会发现打印台会打印如下:

由此说明我们之前配置logback.xml里的logger生效了。
<logger name="com.example.cxdemo" level="INFO" />
以后我们打印信息就直接用logger.info()方法即可。可不要再用System.out.print()了哦。
由此,SLF4J便粗略讲完了,这些知识已足够我们去应用于springboot了,如果还想深入了解可以查看官方文档。

本文介绍SLF4J日志系统的配置方法,包括如何导入SLF4J、配置logback.xml文件以及如何在Spring Boot项目中使用SLF4J进行日志输出。
2637

被折叠的 条评论
为什么被折叠?



