logback首页:http://logback.qos.ch/
slf4j首页:http://www.slf4j.org/
实例:
1、 结构图:
2、 Jar包
logback-classic-0.9.28.jar
logback-core-0.9.28.jar
slf4j-api-1.6.1.jar
3、 TestLogback.java
package logback.test;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.joran.JoranConfigurator;
import ch.qos.logback.core.joran.spi.JoranException;
import ch.qos.logback.core.util.StatusPrinter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LogbackTest {
private static final Logger log = LoggerFactory.getLogger(LogbackTest.class);
public static void main(String[] args) {
// TODO Auto-generated method stub
log.info("logback + slf4j starting up ...");
LoggerContext lc = (LoggerContext)LoggerFactory.getILoggerFactory();
try {
JoranConfigurator configurator = new JoranConfigurator();
configurator.setContext(lc);
lc.reset();
configurator.doConfigure("conf/logback-log.xml");
}
catch (JoranException e) {
log.error(e.getMessage());
}
//打印logback加载过程
StatusPrinter.printInCaseOfErrorsOrWarnings(lc);
log.info("flyfox server daemon run.");
log.info("test info");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
log.debug("test debug");
log.error("test error");
}
}
4、 logback-log.xml
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<!-- 控制台输出日志 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss}, %p, %c, %t, %r, %ex, %F, %L, %C{1}, %M : %m%n</pattern>
</layout>
</appender>
<!-- 文件输出日志 (文件大小策略进行文件输出,超过指定大小对文件备份)-->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>log/logback.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<FileNamePattern>log/sshd.log.%i.bak</FileNamePattern>
<MinIndex>1</MinIndex>
<MaxIndex>12</MaxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>5MB</MaxFileSize>
</triggeringPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{yyyy-MM-dd HH:mm:ss}, %p, %c, %t, %r, %ex, %F, %L, %C{1}, %M %m%n</Pattern>
</layout>
</appender>
<appender name="FILE-ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<OnMismatch>DENY</OnMismatch>
<OnMatch>ACCEPT</OnMatch>
</filter>
<File>log/logback-err.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<FileNamePattern>log/sshd-err.log.%i.bak</FileNamePattern>
<MinIndex>1</MinIndex>
<MaxIndex>3</MaxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>5MB</MaxFileSize>
</triggeringPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{yyyy-MM-dd HH:mm:ss}, %p, %c, %t, %r, %ex, %F, %L, %C{1}, %M %m%n</Pattern>
</layout>
</appender>
<root level="ALL">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE"/>
<appender-ref ref="FILE-ERROR"/>
</root>
</configuration>
5、 logback.log和logback-err.log
logback.log
2011-07-22 21:32:03, INFO, logback.test.LogbackTest, main, 328, , LogbackTest.java, 33, l.t.LogbackTest, main flyfox server daemon run.
2011-07-22 21:32:03, INFO, logback.test.LogbackTest, main, 328, , LogbackTest.java, 34, l.t.LogbackTest, main test info
2011-07-22 21:32:03, DEBUG, logback.test.LogbackTest, main, 438, , LogbackTest.java, 41, l.t.LogbackTest, main test debug
2011-07-22 21:32:03, ERROR, logback.test.LogbackTest, main, 438, , LogbackTest.java, 42, l.t.LogbackTest, main test error
logback-err.log
2011-07-22 21:32:03, ERROR, logback.test.LogbackTest, main, 438, , LogbackTest.java, 42, l.t.LogbackTest, main test error
6、 控制台输出
21:32:03.562 [main] INFO logback.test.LogbackTest - logback + slf4j starting up ...
21:32:03,468 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
21:32:03,468 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
21:32:03,468 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.xml]
21:32:03,468 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Setting up default configuration.
21:32:03,671 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
21:32:03,687 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
………………………………………………………………
………………………………………………………………
………………………………………………………………
21:32:03,765 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [FILE] to Logger[ROOT]
21:32:03,765 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [FILE-ERROR] to Logger[ROOT]
2011-07-22 21:32:03, INFO, logback.test.LogbackTest, main, 328, , LogbackTest.java, 33, l.t.LogbackTest, main : flyfox server daemon run.
2011-07-22 21:32:03, INFO, logback.test.LogbackTest, main, 328, , LogbackTest.java, 34, l.t.LogbackTest, main : test info
2011-07-22 21:32:03, DEBUG, logback.test.LogbackTest, main, 438, , LogbackTest.java, 41, l.t.LogbackTest, main : test debug
2011-07-22 21:32:03, ERROR, logback.test.LogbackTest, main, 438, , LogbackTest.java, 42, l.t.LogbackTest, main : test error