slf4j+logback将日志输出到控制台

来源:互联网 发布:学校收费软件 编辑:程序博客网 时间:2024/05/17 23:51

slf4j+logback将日志输出到控制台


SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。就是说,slf4j可以与许多日志集成,其中包括log4j和logback具有更好的性能、更少的内存使用、自动重加载配置文件以及过滤功能等,接下来以slf4j+logback讲述其使用步骤。


步骤一:在pom.xml中添加依赖(如果没使用maven,可以自动下载相应的包,手动添加)

  <properties>    <logback.version>1.1.7</logback.version>  </properties>  <dependencies>    <dependency>        <groupId>org.slf4j</groupId>        <artifactId>slf4j-api</artifactId>        <version>1.7.21</version>    </dependency>    <dependency>        <groupId>ch.qos.logback</groupId>        <artifactId>logback-core</artifactId>        <version>${logback.version}</version>    </dependency>    <dependency>        <groupId>ch.qos.logback</groupId>        <artifactId>logback-classic</artifactId>        <version>${logback.version}</version>    </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

步骤二:在src/main/resources下添加logback.xml配置文件,系统会自动识别。

<?xml version="1.0" encoding="UTF-8"?><configuration>  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">    <!-- encoders are assigned the type         ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->    <encoder>      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>    </encoder>  </appender>  <root level="debug">    <appender-ref ref="STDOUT" />  </root></configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

其中的配置文件可以参照相关网站:
http://logback.qos.ch/manual/configuration.html


步骤三:编写测试类

@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration({"classpath:spring/spring-dao.xml",                       "classpath:spring/spring-service.xml"})public class SeckillServiceTest {    private final Logger logger=LoggerFactory.getLogger(this.getClass());    @Autowired    private SeckillService seckillService;    @Test    public void testGetSeckillList() {        List<Seckill> list=seckillService.getSeckillList();        logger.info("list={}", list);    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

测试后输出结果为:

16:43:36.830 [main] INFO  o.seckill.service.SeckillServiceTest - list=[商品信息:1002 1000元秒杀iphone6 Sun Oct 30 15:56:16 CST 2016 null Sun Oct 23 14:46:47 CST 2016, 商品信息:1003 500元秒杀ipad2 Fri Oct 21 00:00:00 CST 2016 null Sun Oct 23 14:46:47 CST 2016, 商品信息:1004 300元秒杀小米2 Fri Oct 21 00:00:00 CST 2016 null Sun Oct 23 14:46:47 CST 2016, 商品信息:1005 200元秒杀红米note Fri Oct 21 00:00:00 CST 2016 null Sun Oct 23 14:46:47 CST 2016]