我是靠谱客的博主 平常灯泡,最近开发中收集的这篇文章主要介绍SLF4J与Log4j整合使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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


最后

以上就是平常灯泡为你收集整理的SLF4J与Log4j整合使用的全部内容,希望文章能够帮你解决SLF4J与Log4j整合使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部