一 环境配置: XP+JDK1.5+Myeclipse6.6
二 各组件的官方网址:
slf4j:http://www.slf4j.org/download.html
logback:http://logback.qos.ch/download.html
log4j.properties 转换为 logback.xml 工具页面
http://logback.qos.ch/translator
三 项目文件:
参考资料
Java日志框架:SLF4J, Apache Common-Logging, Log4J和Logback
http://liuzidong.iteye.com/blog/776072
SLF4J 的几种实际应用模式--之一:SLF4J+Log4J
http://cammsia.iteye.com/blog/645080
SLF4J 的几种实际应用模式--之二:SLF4J+Logback
http://cammsia.iteye.com/blog/645078
Logback 分为三个模块:logback-core,logback-classic,logback-access。logback-core 是核心;logback-classic 改善了 log4j,且自身实现了 SLF4J API,所以即使用 Logback 你仍然可以使用其他的日志实现,如原始的 Log4J,java.util.logging 等;logback-access 让你方便的访问日志信息,如通过 http 的方式。
需要的配置文件和组件包,下面三个 jar 文件和一个 xml文件都是要放在项目的 ClassPath 上。
slf4j-api-1.6.1.jar
logback-classic-0.9.24.jar
logback-core-0.9.24.jar
四 示例代码:摘自slf4j
- class Bar {
- Logger logger = LoggerFactory.getLogger(Bar.class);
- public void doIt() {
- logger.debug("doing my job");
- }
- }
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- 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;
- public class MyAppWithConfigFile {
- public static void main(String[] args) {
- Logger logger = LoggerFactory.getLogger(MyAppWithConfigFile.class);
- LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
- try {
- JoranConfigurator configurator = new JoranConfigurator();
- lc.reset();
- configurator.setContext(lc);
- // configurator.doConfigure("E:/testworkspace/SLF4J/src/chapters/architecture/sample-config-2.xml");
- [color=red]configurator.doConfigure(MyAppWithConfigFile.class
- .getResourceAsStream("sample-config-3.xml"));[/color]
- } catch (JoranException je) {
- StatusPrinter.print(lc.getStatusManager());
- }
- logger.info("Entering application.");
- Bar bar = new Bar();
- bar.doIt();
- logger.info("Exiting application.");
- logger.warn("WARN...");
- logger.error("ERROR...");
- }
- }
- <?xml version="1.0" encoding="UTF-8" ?>
- <configuration>
- <!-- 声明变量 -->
- <substitutionProperty name="log.base" value="./logs/hzg" />
- <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
- <layout class="ch.qos.logback.classic.PatternLayout">
- <pattern>%-4relative [%thread] %-5level %class - %msg%n</pattern>
- </layout>
- </appender>
- <appender name="FILE" class="ch.qos.logback.core.FileAppender">
- <layout class="ch.qos.logback.classic.PatternLayout">
- <pattern>%-4relative [%thread] %-5level %class - %msg%n</pattern>
- </layout>
- <File>${log.base}.log</File>
- </appender>
- <logger name="chapters.architecture" level="error" />
- <root level="debug">
- <appender-ref ref="STDOUT" />
- <appender-ref ref="FILE" />
- </root>
- </configuration>
其中红色地方可以设置日志文件的存储位置,如是WEB应用程序可在Servlet中进行相应设置
<logger name="chapters.architecture" level="error" />
这个可以设置对应包下面所要显示的日志级别