<div class="iteye-blog-content-contain" style="font-size: 14px;">
<p>slf4j是一款非常不错的关于log的开源框架,logback是依托于log4j的api,但是它提供了更多的属性,不管是在性能、内存损耗上,都有显著提高,并且它能够提供自动加载、过滤以及其它的属性特征。</p>
<p>第一步,建立pom.xml</p>
<pre name="code" class="java">&lt;properties&gt;
&lt;slf4j.version&gt;1.6.4&lt;/slf4j.version&gt;
&lt;logback.version&gt;1.0.1&lt;/logback.version&gt;
&lt;/properties&gt;
&lt;dependencies&gt;
&lt;dependency&gt;
&lt;groupId&gt;org.slf4j&lt;/groupId&gt;
&lt;artifactId&gt;slf4j-api&lt;/artifactId&gt;
&lt;version&gt;${slf4j.version}&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;ch.qos.logback&lt;/groupId&gt;
&lt;artifactId&gt;logback-classic&lt;/artifactId&gt;
&lt;version&gt;${logback.version}&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;ch.qos.logback&lt;/groupId&gt;
&lt;artifactId&gt;logback-core&lt;/artifactId&gt;
&lt;version&gt;${logback.version}&lt;/version&gt;
&lt;/dependency&gt;
&lt;/dependencies&gt;</pre>
<p> 第二步,创建配置文件,Logback支持两种方式,传统方式是xml以及<span style="color: #333333; font-family: Arial, serif; line-height: 22px; font-size: 12px;">Groovy DSL style,命名指定为logback.xml放到classpath</span></p>
<pre name="code" class="java">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;configuration&gt;
&lt;appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"&gt;
&lt;!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default --&gt;
&lt;encoder&gt;
&lt;pattern&gt;%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n&lt;/pattern&gt;
&lt;/encoder&gt;
&lt;/appender&gt;
&lt;logger name="com.lordofthejars.foo" level="INFO" additivity="false"&gt;
&lt;appender-ref ref="STDOUT" /&gt;
&lt;/logger&gt;
&lt;!-- Strictly speaking, the level attribute is not necessary since --&gt;
&lt;!-- the level of the root level is set to DEBUG by default. --&gt;
&lt;root level="DEBUG"&gt;
&lt;appender-ref ref="STDOUT" /&gt;
&lt;/root&gt;
&lt;/configuration&gt;</pre>
<p><span style="color: #333333; font-family: Arial, serif; line-height: 22px; font-size: 12px;"> 通过上述的配置文件,一目了然能够看明白,它的日志级别,以及需要追加的日志的目录,如果在根目录中已经打印log,而子目录也被授予print,那么可以通过追加属性这是false,它只会打印一次。</span></p>
<p><span style="color: #333333; font-family: Arial, serif; line-height: 22px; font-size: 12px;">第三步:建立一个类,介绍下如何使用</span></p>
<pre name="code" class="java">public class BarComponent {
private static final Logger logger = LoggerFactory.getLogger(BarComponent.class);
public void bar() {
String name = "lordofthejars";
logger.info("Hello from Bar.");
logger.debug("In bar my name is {}.", name);
}
}</pre>
<p><span style="color: #333333; font-family: Arial, serif; line-height: 22px; font-size: 12px;"> 它会根据{}这一对,用name参数进行替代,是不是比较好用,好像有点C的语法。</span></p>
<p><span style="color: #333333; font-family: Arial, serif;"><span style="font-size: 12px; line-height: 22px;">如果你对于groovy属性,同样也可以采用DSL Style方式</span></span></p>
<p><span style="color: #333333; font-family: Arial, serif;"><span style="font-size: 12px; line-height: 22px;"></span></span></p>
<pre name="code" class="java">&lt;dependency&gt;
&lt;groupId&gt;org.codehaus.groovy&lt;/groupId&gt;
&lt;artifactId&gt;groovy&lt;/artifactId&gt;
&lt;version&gt;${groovy.version}&lt;/version&gt;
&lt;scope&gt;runtime&lt;/scope&gt;
&lt;/dependency&gt;</pre>
<p><span style="color: #333333; font-family: Arial, serif;"><span style="font-size: 12px; line-height: 22px;"> 类同于刚才的logback.xml的语法</span></span></p>
<p><span style="color: #333333; font-family: Arial, serif;"><span style="color: #333333; font-family: Arial, serif;"></span></span></p>
<pre name="code" class="java">import ch.qos.logback.classic.encoder.PatternLayoutEncoder
import ch.qos.logback.core.ConsoleAppender
import static ch.qos.logback.classic.Level.DEBUG
import static ch.qos.logback.classic.Level.INFO
appender("STDOUT", ConsoleAppender) {
encoder(PatternLayoutEncoder) {
pattern = "%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} Groovy - %msg%n"
}
}
logger("com.lordofthejars.foo", INFO)
root(DEBUG, ["STDOUT"])</pre>
<p><span style="color: #333333; font-family: Arial, serif;"><span style="color: #333333; font-family: Arial, serif;"> 结论:</span></span></p>
<p><span style="color: #333333; font-family: Arial, serif;">logback比logg4j好用,性能指标也比较高,值得推荐的一款日志的框架。</span></p>
</div>