log4j和apache.commons.logging之间的关系

时间:2011-12-13 11:52:54

标签: logging log4j

请有人告诉我 log4j和apache.commons.logging之间的关系是什么?哪一个更受欢迎,更好?

我导入了一个已导入import org.apache.commons.logging.LogFactory;的现有应用程序,并编写了一个名为Log的单独类,并将某些方法重写为criticalwarn,{ {1}}

例如

info

有人可以告诉我log4j和apache.commons.logging有什么不同吗?

3 个答案:

答案 0 :(得分:14)

Apache Commons Logging是具体实现的抽象。它使用log4j(如果存在并配置)。我会使用Commons登录我的代码和log4j作为日志记录实现。

答案 1 :(得分:2)

log4j是一个日志框架,即它提供了记录消息的代码。 Commons-logging是一个用于记录框架的抽象层,它本身并不记录任何内容。例如,如果我使用commons记录编写代码并将其部署在JBoss上,则日志记录由log4j完成,但如果我在WebSphere上部署它,则由WebSphere自己的日志记录实现完成。如果我运行与独立应用程序相同的代码,那么Java自己使用的日志记录

答案 2 :(得分:0)

根据commons-logging的java-doc文档

LogFactory的具体子类,它实现以下算法以动态选择日志记录实现类来实例化包装器:

  • 使用名为的工厂配置属性 org.apache.commons.logging.Log来识别请求的 实施班。
  • 使用org.apache.commons.logging.Log系统属性进行标识 请求的实现类。
  • 如果Log4J可用,则返回实例 org.apache.commons.logging.impl.Log4JLogger。
  • 如果JDK 1.4或更高版本可用,则返回实例 org.apache.commons.logging.impl.Jdk14Logger。
  • 否则,返回一个实例 org.apache.commons.logging.impl.SimpleLog

因此推论是:

  • commons-logging更多的是抽象。它也可以没有LOG4J。
  • 如果存在Log4j,则选择它。否则可以使用其他默认值。
  • LOG4J很受欢迎,因为它可以轻松地将输出重定向到文件,并且可以灵活配置日志级别。

JavaDoc网址:https://commons.apache.org/proper/commons-logging/javadocs/api-1.1.3/index.html