3.SpringBoot使用SLF4J日志记录
(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了,如果还想深入了解可以查看官方文档。