Apache CommonLogging + Log4J
2015-10-20 17:04
579 查看
package cn.byref.demo.logging; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class CommonLoggingTest { public static void main(String[] args) { Log logger = LogFactory.getLog(CommonLoggingTest.class); // Logger logger = Logger.getLogger(CommonLoggingTest.class); // log.info("load test"); logger.debug("CommonLoggingTest log"); } }
# An example log4j configuration file that outputs to System.out. The # output information consists of relative time, log level, thread # name, logger name, nested diagnostic context and the message in that # order. # For the general syntax of property based configuration files see the # documenation of org.apache.log4j.PropertyConfigurator. log4j.rootLogger=DEBUG,B1,A2 log3j.logger.cn.byref.demo.logging.CommonLoggingTest = DEBUG, B1 # A1 is set to be a ConsoleAppender which outputs to System.out. log4j.appender.B1=org.apache.log4j.ConsoleAppender # A1 uses PatternLayout. log4j.appender.B1.layout=org.apache.log4j.PatternLayout # The conversion pattern uses format specifiers. You might want to # change the pattern an watch the output format change. log4j.appender.B1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n # In this example, we are not really interested in INNER loop or SWAP # messages. See the effects of uncommenting and changing the levels of # the following loggers. # log4j.logger.org.apache.log4j.examples.SortAlgo.INNER=WARN # log4j.logger.org.apache.log4j.examples.SortAlgo.SWAP=WARN # Appender A2 writes to the file "test". log4j.appender.A2=org.apache.log4j.FileAppender log4j.appender.A2.File=test.log # Truncate 'test' if it aleady exists. log4j.appender.A2.Append=true # Appender A2 uses the PatternLayout. log4j.appender.A2.layout=org.apache.log4j.PatternLayout log4j.appender.A2.layout.ConversionPattern=%-5r %-5p [%t] %c{2} - %m%n
有必要详细说明一下调用LogFactory.getLog()时发生的事情。调用该函数会启动一个发现过程,即找出必需的底层日志记录功能的实现,具体的发现过程在下面列出。注意,不管底层的日志工具是怎么找到的,它都必须是一个实现了Log接口的类,且必须在CLASSPATH之中。Commons Logging API直接提供对下列底层日志记录工具的支持:Jdk14Logger,Log4JLogger,LogKitLogger,NoOpLogger (直接丢弃所有日志信息),还有一个SimpleLog。
⑴ Commons的Logging首先在CLASSPATH中查找commons-logging.properties文件。这个属性文件至少定义org.apache.commons.logging.Log属性,它的值应该是上述任意Log接口实现的完整限定名称。如果找到org.apache.commons.logging.Log属相,则使用该属相对应的日志组件。结束发现过程。
⑵ 如果上面的步骤失败(文件不存在或属相不存在),Commons的Logging接着检查系统属性org.apache.commons.logging.Log。 如果找到org.apache.commons.logging.Log系统属性,则使用该系统属性对应的日志组件。结束发现过程。
⑶ 如果找不到org.apache.commons.logging.Log系统属性,Logging接着在CLASSPATH中寻找log4j的类。如果找到了,Logging就假定应用要使用的是log4j。不过这时log4j本身的属性仍要通过log4j.properties文件正确配置。结束发现过程。
⑷ 如果上述查找均不能找到适当的Logging API,但应用程序正运行在JRE 1.4或更高版本上,则默认使用JRE 1.4的日志记录功能。结束发现过程。
⑸ 最后,如果上述操作都失败(JRE 版本也低于1.4),则应用将使用内建的SimpleLog。SimpleLog把所有日志信息直接输出到System.err。结束发现过程。
相关文章推荐
- apache commons codec
- Apache Hadoop YARN – NodeManager--转载
- Apache Hadoop YARN – ResourceManager--转载
- linux+FreeRadius+mysql+Apache安装搭建过程
- Apache服务 启动不了的原因
- 利用ApachePOI输出Excel文件
- [异常] Java文件上传异常org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of mul
- apache24 django1.8.2 mod_wsgi 集成
- 阿里云 Ubuntu操作系统 配置虚拟主机
- Ubuntu14.04+Python3.4+apache2.4+Django1.7站点发布笔记
- apache 服务无法启动 wampserver安装问题
- CentOS 6.5下源码安装LAMP(Linux+Apache+Mysql+Php)环境
- <学习笔记>java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addServlet
- 使用apt-get安装服务器apache2+php+mysql
- devstack apache2/keystone 没有启动
- 高性能jdbc封装工具 Apache Commons DbUtils 1.6(转载)
- Apache2.4.6无需配置NameVirtualHost
- ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Cannot lock storage /op
- Windows下Apache服务器中自动配置二级子域名
- Apache 、PHP的安装