[java学习笔记]logback的使用
建立一个简单的springboot的项目,不需要引入额外的依赖即可使用logback日志;
默认的日志记录级别是info,即只显示info, warn, error的日志,debug级别的日志不会显示;
可以通过配置文件的形式,将错误日志和正常的日志分开记录,指定日志的级别,日志的格式等操作,默认的配置文件名是logback-spring.xml,一个配置文件的例子;
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--定义日志文件的存储地址,使用绝对路径-->
<property name="LOG_HOME" value="G:/jarpro/ly_log/log"/>
<!-- Console 输出设置 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<!--匹配到error,则拒绝,不输出-->
<OnMatch>DENY</OnMatch>
<!--其他的输出到该文件-->
<OnMismatch>ACCECT</OnMismatch>
</filter>
<!--滚动策略按照时间滚动,一天一个日志文件-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<fileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="FILEERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--滚动策略按照时间滚动,一天一个日志文件-->
<!--增加filter,只显示error-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<!--含义为只显示error以上级别的日志-->
<level>ERROR</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<fileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd}_error.log</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!--在控制台的输出-->
<logger name="org.apache.ibatis.cache.decorators.LoggingCache" level="DEBUG" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.springframework.boot" level="DEBUG"/>
<!--针对类进行级别设置-->
<!--<logger name="cn.ly.ly_sell.LoggerTest" level="DEBUG"/>-->
<!--全局设置级别设置-->
<root level="info">
<!--<appender-ref ref="ASYNC"/>-->
<appender-ref ref="FILE"/>
<appender-ref ref="FILEERROR"/>
<appender-ref ref="CONSOLE"/>
</root>
</configuration>
日志的使用:
Logger logger = LoggerFactory.getLogger(LyLogApplicationTests.class); @Test public void contextLoads() { // 默认情况下debug不会显示 logger.info("info日志"); logger.debug("debug日志"); logger.error("error日志"); logger.warn("warn日志"); // 在日志中拼装变量 String name = "ly"; logger.info("日志:{}", name); }
使用日志对象的记录日志的方法;创建logger时指定的类对象是会在这条日志输出时显示出来,所以要指定本类的类对象,方便定位到日志输出的类;
还可以使用lomback的@Slf4j的注解,简化日志记录:
@RunWith(SpringRunner.class) @SpringBootTest @Slf4j // lombok提供的日志记录注解 public class LyLogApplicationTests {
@Test // lombok简化日志记录 public void test() { log.info("info日志"); log.debug("debug日志"); log.error("error日志"); log.warn("warn日志"); } }
学习java的新手,尝试将学到的内容总结为博客,内容如有错误,欢迎指正,感激不尽。

浙公网安备 33010602011771号