slf4j简介

1. 简介

日志对于任何一个Java应用程序,尤其是服务端程序是至关重要的,常用的如
- java.util.logging
- Apache log4j
- logback
- commons-logging 等。
但是上述各种日志的实现方式都是和各自的jar包强依赖的,也就是说耦合度太高。由于某种原因,一旦你要换种日志框架那就必须更改你代码中的各处和日志有关的代码。比如这种重复但又不得不写的代码:

logger.debug("...... " + string1 + "... " + int1);

同时slf4j支持更加高效简洁的方式来输出日志信息:

logger.debug("...... {}... {}",string1,int1);

       slf4j就像是jdbc一样进行了一次抽象,站在一个更高的角度进行日志记录,可以方便的在各种常用的日志框架之间转换而无需改变代码。也就是说slf4j(Simple logging Facade for Java)不是一个真正的日志实现,而是一个抽象层

2. 使用

(此处用log4j举例)

2.1 jar包

  • slf4j-api-1.7.10.jar
  • log4j-1.2.16.jar
  • slf4j-log4j12-1.7.12.jar

2.2 配置文件

log4j.properties

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p %m %c{1}:(%L) %d{ABSOLUTE} %n

#log4j.rootLogger=debug, stdout
log4j.rootLogger=info, stdout
log4j.logger.footmark=debug

2.3 java代码中使用

package test.slf4j;

import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Main {
    Logger logger = LoggerFactory.getLogger(Main.class);

    @Test
    public void test1() {
        try {
            logger.info("111");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Test
    public void test2() {
        try {
            logger.info("id is {} .", 1);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

3. 切换为其他框架

3.1 jdk风格

如果想切换到jdk14的log的风格,只需要把 log4j-1.2.16.jar和slf4j-log4j12-1.7.12.jar从classpath中移除,同时classpath中加入slj4j-jdk14-1.4.1.jar即可。

3.2 simple log风格

4. 总结

使用java,无论何时,都应该针对抽象编程而不是针对具体实现编程,slf4j就是一种对日志记录的抽象,它并不是一种具体实现。

欢迎纠错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值