大家好,欢迎来到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