免费网站空间php,个人网页设计作业,a做片手机免费网站有哪些,网站制作定制使用SLF4J和Logback
前面介绍了Commons Logging 和Log4j 这一对好基友#xff0c;它们一个负责充当日志 API#xff0c;一个负责实现日志底层#xff0c;搭配使用非常便于开发。
有的童鞋可能还听说过SLF4J和Logback。这两个东东看上去也像日志#xff0c;它们又是啥它们一个负责充当日志 API一个负责实现日志底层搭配使用非常便于开发。
有的童鞋可能还听说过SLF4J和Logback。这两个东东看上去也像日志它们又是啥
其实SLF4J类似于Commons Logging也是一个日志接口而Logback类似于Log4j是一个日志的实现。
为什么有了Commons Logging和Log4j又会蹦出来SLF4J和Logback这是因为Java有着非常悠久的开源历史不但OpenJDK本身是开源的而且我们用到的第三方库几乎全部都是开源的。开源生态丰富的一个特定就是同一个功能可以找到若干种互相竞争的开源库。
因为对Commons Logging的接口不满意有人就搞了SLF4J。因为对Log4j的性能不满意有人就搞了Logback。
我们先来看看SLF4J对Commons Logging的接口有何改进。在Commons Logging中我们要打印日志有时候得这么写
int score 99;
p.setScore(score);
log.info(Set score score for Person p.getName() ok.);拼字符串是一个非常麻烦的事情所以SLF4J的日志接口改进成这样了
int score 99;
p.setScore(score);
logger.info(Set score {} for Person {} ok., score, p.getName());我们靠猜也能猜出来SLF4J的日志接口传入的是一个带占位符的字符串用后面的变量自动替换占位符所以看起来更加自然。
如何使用SLF4J它的接口实际上和Commons Logging几乎一模一样
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;class Main {final Logger logger LoggerFactory.getLogger(getClass());
}对比一下Commons Logging和SLF4J的接口
Commons Logging SLF4J
org.apache.commons.logging.Log org.slf4j.Logger
org.apache.commons.logging.LogFactory org.slf4j.LoggerFactory不同之处就是Log变成了LoggerLogFactory变成了LoggerFactory。
使用SLF4J和Logback和前面讲到的使用Commons Logging加Log4j是类似的先分别下载SLF4J和Logback然后把以下jar包放到classpath下
slf4j-api-1.7.x.jar
logback-classic-1.2.x.jar
logback-core-1.2.x.jar然后使用SLF4J的Logger和LoggerFactory即可。和Log4j类似我们仍然需要一个Logback的配置文件把logback.xml放到classpath下配置如下
?xml version1.0 encodingUTF-8?
configurationappender nameCONSOLE classch.qos.logback.core.ConsoleAppenderencoderpattern%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n/pattern/encoder/appenderappender nameFILE classch.qos.logback.core.rolling.RollingFileAppenderencoderpattern%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n/patterncharsetutf-8/charset/encoderfilelog/output.log/filerollingPolicy classch.qos.logback.core.rolling.FixedWindowRollingPolicyfileNamePatternlog/output.log.%i/fileNamePattern/rollingPolicytriggeringPolicy classch.qos.logback.core.rolling.SizeBasedTriggeringPolicyMaxFileSize1MB/MaxFileSize/triggeringPolicy/appenderroot levelINFOappender-ref refCONSOLE /appender-ref refFILE //root
/configuration运行即可获得类似如下的输出
13:15:25.328 [main] INFO com.itranswarp.learnjava.Main - Start process...从目前的趋势来看越来越多的开源项目从Commons Logging加Log4j转向了SLF4J加Logback。
小结
SLF4J 和 Logback可以取代Commons Logging和Log4j
始终使用SLF4J的接口写入日志使用Logback只需要配置不需要修改代码。