建立一个简单的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日志");
}
}
来源:oschina
链接:https://my.oschina.net/u/4387235/blog/3462060