日志组件 commons-logging、slf4j、log4j

1. commons-logging
# download url
http://commons.apache.org/proper/commons-logging/download_logging.cgi
# 说明
commons-logging 是一个用于日志系统的门面,提供了记录日志的统一接口。
# 查找日志实现库的方式
基于 ClassLoader 在程序运行时动态查找所使用的日志库。
# 所提供的接口(以 INFO 为例)
public void info(Object message);
public void info(Object message, Throwable t);
# 优缺点
不支持 OSGI,原因是 commons-logging 使用了 ClassLoader 寻找和载入底层的日志库,而在 OSGI 中不同的插件使用自己的ClassLoader。
参考 http://www.360doc.com/content/10/1216/23/573136_78845816.shtml
# 使用示例(依赖jar:commons-logging-1.1.3.jar)
package org.demo.logtest;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class CommonsLogTest {

	private static Log logger = LogFactory.getLog(CommonsLogTest.class);
	
	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		logger.info("app start.");
		Thread.sleep(1000);
		logger.info("app end.");
	}
}
2. slf4j
# download url
http://www.slf4j.org/download.html
# 说明
slf4j(Simple Logging Facade for Java) 即简单日志门面,是一套接口而不是具体的日志解决方案。
# 查找日志实现库的方式
slf4j 在编译时就静态绑定了具体的日志实现库,只需要选用不同 jar 即可。
# 所提供的接口(以 INFO 为例)
public void info(String msg);
public void info(String format, Object arg);
public void info(String format, Object arg1, Object arg2);
public void info(String format, Object... arguments);
public void info(String msg, Throwable t);
# 优缺点
提供的接口多且性能较好,参考 http://www.slf4j.org/faq.html#logging_performance
可以很好的支持 OSGI;
比较灵活 日志组件 commons-logging、slf4j、log4j_第1张图片
# 使用示例(依赖jar:slf4j-api-1.7.5.jar + slf4j-log4j12-1.7.5.jar或其他 slf4j bindings)
package org.demo.logtest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Slf4jLogTest {

	private static Logger logger = LoggerFactory.getLogger(Slf4jLogTest.class);
	
	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		logger.info("app start.");
		Thread.sleep(1000);
		logger.info("app end.");
	}
}
3. log4j
# 说明
log4j 是一个具体的日志解决方案。通过使用 log4j,我们可以将日志信息输出到控制台、文件、甚至是NT的事件记录器、UNIX Syslog守护进程等,同时可以控制每条日志的输出格式和级别。
# download url
http://logging.apache.org/log4j/1.2/download.html
# 使用示例(依赖jar:log4j-1.2.17.jar)
package org.demo.logtest;

import org.apache.log4j.Logger;

public class Log4jTest {

	private static Logger logger = Logger.getLogger(Log4jTest.class);
	
	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		logger.info("app start.");
		Thread.sleep(1000);
		logger.info("app end.");
	}
}
# 一个简单的 log4j 配置文件 log4j.properties
# log4j.properties
# 
log4j.rootLogger=DEBUG,console
# 
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%d] %-5p %C - %m%n
# 相关链接
顶君肺的OSGi和Logging
http://sdhjc.blog.163.com/blog/static/17795090200892401928589/
SLF4J 的几种实际应用模式--之一:SLF4J+Log4J http://unmi.cc/slf4j-log4j
SLF4J 的几种实际应用模式--之二:SLF4J+Logback http://unmi.cc/slf4j-logback
SLF4J 的几种实际应用模式--之三:JCL-Over-SLF4J+SLF4J http://unmi.cc/jcl-over-slf4j-slf4j

你可能感兴趣的:(commons)