在开发中,我们经常使用 System.out.println() 打印一些信息,但是这样不好,因为大量的使用 System.out 会增加资源的消耗。我们在实际项目中使用的是 SLF4J 的 Logback 来输出日志,效率更高,Spring Boot 提供了一套日志系统,logback 是最优的选择。
Spring Boot 对 SLF4J 支持得很好,内部已经集成了 SLF4J,一般我们在使用的时候,会对 SLF4J 做一下配置。
我们将logback.xml文件放在resources目录下,和application.yml文件同级,则在application.yml文件中就不需要做配置了,springboot在启动的时候会自动加载logback.xml文件。
logback.xml 文件中主要用来做日志的相关配置。在 logback.xml 中,我们可以定义日志输出的格式、路径、控制台输出格式、文件大小、保存时长等等。
现在我们来看看logback.xml文件的内容:
<configuration>
<property name="LOG_PATTERN" value="%date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />
<property name="FILE_PATH" value="D:\\log\\push.%d{yyyy-MM-dd}.%i.log" />
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- 按照上面配置的LOG_PATTERN来打印日志 -->
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 按照上面配置的FILE_PATH路径来保存日志 -->
<fileNamePattern>${FILE_PATH}</fileNamePattern>
<!-- 日志保存15天 -->
<maxHistory>15</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- 单个日志文件的最大,超过则新建日志文件存储 -->
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<!-- 按照上面配置的LOG_PATTERN来打印日志 -->
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
<logger name="com.yhcode" level="INFO" />
<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>
</configuration>
在上面的配置文件中我们对日志的格式,日志生成的路径,日志保存的时长等等做了配置,在实际项目中,这些日志都是排查问题的过程中非常重要的参考资料。