SLF4J与Log4j整合使用[亲测有效]

SLF4J与Log4j整合使用[亲测有效]SLF4jSimpleLoggingFacadeforJava:简单日志门户。是一种JCL体系。类似于apachecommonsLogging,但是比commonslogging使用更方便,更为强大。它是由Log4j的作者开发的,还有用于取代log4j的logback.使用SLF4J,通常由两种组合SLF4J+Log4j;SLF4J+logback,目前推荐的是SL

大家好,欢迎来到IT知识分享网。

SLF4j—-Simple Logging Facade for Java:简单日志门户。是一种JCL体系。类似于apache commons Logging,但是比commons logging使用更方便,更为强大。它是由Log4j的作者开发的,还有用于取代log4j的logback.

使用SLF4J,通常由两种组合SLF4J+Log4j; SLF4J+logback,目前推荐的是SLF4J+logback.不过对于习惯使用log4j的我们也可以使用SLF4J+log4j.

同时SLF4J还支持android日志操作。

SLF4J的体系:SLF4J-api,然后调用具体实现的包装库wrapper如:slf4j-log4j12-1.7.7.jar然后是调用具体的实现如Log4j-1.2.jar.所以通常我们需要导入这三个库。

使用SLF4J:的明显好处:

1.参数化日志书写形式:通过占位符{}来参数化:

参数化对象

Object entry = new SomeObject();

logger.debug(“The entry is {}.”, entry);

参数化一个或多个字符串:

logger.debug(“The new entry is {}.”, entry);

logger.debug(“The new entry is {}. It replaces {}.”, entry, oldEntry);

关于输出{}相关问题转义等:

logger.debug(“Set {1,2} differs from {}”, “3”);

输出”Set {1,2} differs from 3″.

logger.debug(“Set {1,2} differs from {
{}}”, “3”);

输出”Set {1,2} differs from {3}”.

logger.debug(“Set \\{} differs from {}”, “3”);

输出 “Set {} differs from 3”.

2.使用参数化方法。可以避免书写 isDebugEnabled,isInfoEnabled等方法。但是不使用参数化方法时还得看情况书写。

以下摘自slf4j-log4j12.jar中的源代码,看看就知道为什么会有这个有点和区分了:

摘自slf4j-log4j12.jar中的源代码
非参数化方法:
public void debug(String msg) {
    logger.log(FQCN, Level.DEBUG, msg, null);
  }
参数化方法:
  public void debug(String format, Object arg) {
    if (logger.isDebugEnabled()) {//参数化方法会自动判断log4j配置文件是否允许debug,如若不允许则直接忽略。
      FormattingTuple ft = MessageFormatter.format(format, arg);
      logger.log(FQCN, Level.DEBUG, ft.getMessage(), ft.getThrowable());
    }
  }

好了,不多说。

需要导入的库:slf4j-api.jar,log4j-1.2.jar,slf4j-log4j12-1.7.7.jar通常还推荐加上slf4j-simple-1.7.7.jar这个默认的实现,以便在没有其他实现时不至于抛出异常。

使用SLF4j,它会自动寻找classpath路下的实现库,所以我们无须进行配置,但是log4j的配置文件log4j.properties还是要有的。

注意,为了避免冲突,classpath下只能有一种实现。否则将出现意想不到的的问题。

maven集成:

<dependency>

 <groupId>org.slf4j</groupId>

 <artifactId>slf4j-api</artifactId>

 <version>1.7.7</version>

</dependency>

<dependency>

 <groupId>org.slf4j</groupId>

 <artifactId>slf4j-log4j12</artifactId>

 <version>1.7.7</version>

</dependency>

主要使用的API:Logger,LoggerFactory,

使用实例:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld {
  public static void main(String[] args) {
    Logger logger = LoggerFactory.getLogger(HelloWorld.class);
    logger.info("Hello World");
  }
}

参考:http://www.slf4j.org/faq.html#logging_performance

http://www.importnew.com/7450.html

http://singleant.iteye.com/blog/934593

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/24293.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信