org.apache.log4j与org.apache.commons.logging这两个包有什么区别吗,你在写日志的时候用的哪个啊

999朵玫瑰 2012-01-12 10:00:58
我看到网上有些代码,用的是org.apache.log4j.*,比如:
import org.apache.log4j.Logger;

public class FileUtils {
private static Logger logger = Logger.getLogger(FileUtils.class);

而另一些代码用的是org.apache.commons.logging.*,例如:
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class FileUtils {
final static Log log = LogFactory.getLog(FileUtils.class);

这两个到底有什么区别呢?什么时候用org.apache.log4j.*,什么时候用org.apache.commons.logging.*啊?你在写日志的时候用的哪个啊?
...全文
3289 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
readme1988 2012-01-20
  • 打赏
  • 举报
回复
做日志的时候一般是两者一起用,commons-logging工作原理做接口,log4j做实现,应用起来比单独的使用log4j要简单

commons-logging工作原理:
1. 首先在classpath下寻找自己的配置文件commons-logging.properties,如果找到,则使用其中定义的Log实现类
2. 如果找不到commons-logging.properties文件,则在查找是否已定义系统环境变量org.apache.commons.logging.Log,找到则使用其定义的Log实现类
3. 查看classpath中是否有Log4j的包,如果发现,则自动使用Log4j作为日志实现类
4. 使用JDK自身的日志实现类(JDK1.4以后才有日志实现类)
5. 使用commons-logging自己提供的一个简单的日志实现类SimpleLog
(以上顺序不保证完全准确,请参考官方文档)
commons-logging总是能找到一个日志实现类,并且尽可能找到一个"最合适"的日志实现类.
999朵玫瑰 2012-01-20
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 beiouwolf 的回复:]

汗了...楼上几个...
apache common logging是一种log的框架接口,它本身并不实现log记录的功能,而是在运行时动态查找目前存在的日志库,调用相关的日志函数,从而隐藏具体的日志实现
log4j是具体的日志实现,真正负责"写"日志的这个功能

common logging本身不是log,你可以把它看做是一个日志的接口
而log4j就是日志的实现

使用comm……
[/Quote]谢谢大侠,说的清晰明了!
beiouwolf 2012-01-19
  • 打赏
  • 举报
回复
tomcat本身有自己的log实现类,并不使用log4j
beiouwolf 2012-01-19
  • 打赏
  • 举报
回复
汗了...楼上几个...
apache common logging是一种log的框架接口,它本身并不实现log记录的功能,而是在运行时动态查找目前存在的日志库,调用相关的日志函数,从而隐藏具体的日志实现
log4j是具体的日志实现,真正负责"写"日志的这个功能

common logging本身不是log,你可以把它看做是一个日志的接口
而log4j就是日志的实现

使用common logging方式实现日志,主要的原因在于可以忽略底层的日志实现,或者说为以后的日志实现库的更换提供透明界面
你可以考虑下,假设从log4j更换为logback,势必要重写所有原本使用log4j的源代码,而使用common logging的情况下,只需要更换jar包,而不需要对源代码做任何改动
999朵玫瑰 2012-01-19
  • 打赏
  • 举报
回复
谢谢各位了
我看项目部署在linux服务器以后,每天会生成一个catalina.out名字的日志文件,这个用到的是org.apache.log4还是org.apache.commons.logging啊
BUG弄潮儿 2012-01-18
  • 打赏
  • 举报
回复
配合使用
common-logging只是一个简单的log
而log4j是实现了common-logging是一个功能强大的log
项目中一般使用log4j
爱摸鱼de老邪 2012-01-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 onlyonelove 的回复:]
具体有啥不同呢
[/Quote]
一个是框架,一个是日志功能逻辑实现。看包结构即可知道。
爱摸鱼de老邪 2012-01-18
  • 打赏
  • 举报
回复
Apache的Common Logging只是一个高层的日志框架,本身并没有实现真正的写日志能力,而是依赖其它的日志系统如Log4j或者java本身的java.util.logging。可以通过配置文件来设定最终使用log4j还是java.util.logging.没有配置log4j的时候,就会调用java.util.logging包。
999朵玫瑰 2012-01-18
  • 打赏
  • 举报
回复
具体有啥不同呢
suncycle 2012-01-18
  • 打赏
  • 举报
回复
Log4j 框架是用 Java 语言编写的标准日志记录框架,
你上面问的问题,其二者大致功能一直,都是为系统提供日志记录功能。至于用在什么地方嘛,那要看LZ自己的习惯了。
999朵玫瑰 2012-01-13
  • 打赏
  • 举报
回复
一样的吗?
qq931226110 2012-01-12
  • 打赏
  • 举报
回复
commons-logging.jar作用是辅助log4j.jar,当你没有配置log4j.jar的时候,commons-logging.jar会发挥记录日志的作用。
两个的目的是一样的,后者是为框架提供的,servlet用前一个!

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧