使用Commons Logging
Commons Logging
和Java标准库提供的日志不同,Commons Logging
是一个第三方日志库,它是由Apache创建的日志模块,需要导入commons-logging-1.2.jar
。
Commons Logging
的特色是,它可以挂接不同的日志系统,并通过配置文件指定挂接的日志系统。默认情况下,Commons Logging
自动搜索并使用Log4j
(Log4j
是另一个流行的日志系统),如果没有找到Log4j
,再使用JDK Logging
。
使用Commons Logging
只需要和两个类打交道,并且只有两步:
- 先通过LogFactory获取Log类的实例;
- 然后使用Log实例的方法打日志。
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class Main {
public static void main(String[] args) {
Log log = LogFactory.getLog(Main.class);
log.info("start...");
log.warn("end.");
}
}
运行结果如下:
八月 07, 2019 9:58:08 上午 Main main
信息: start...
八月 07, 2019 9:58:08 上午 Main main
警告: end.
Commons Logging定义了6个日志级别:
- FATAL
- ERROR
- WARNING
- INFO
- DEBUG
- TRACE
默认级别是INFO
。
1)在静态方法中引用Log
使用Commons Logging
时,如果在静态方法中引用Log,通常直接定义 大专栏 使用Commons Logging一个静态类型变量:
public class Main {
static final Log log = LogFactory.getLog(Main.class);
static void foo() {
log.info("foo");
}
}
2)在实例方法中引用Log
public class Person {
protected final Log log = LogFactory.getLog(getClass());
void foo() {
log.info("foo");
}
}
注意到实例变量log的获取方式是LogFactory.getLog(getClass())
,虽然也可以用LogFactory.getLog(Person.class)
,但是前一种方式有个非常大的好处,就是子类可以直接使用该log实例。例如:
// 在子类中使用父类实例化的log:
public class Student extends Person {
void bar() {
log.info("bar");
}
}
由于Java类的动态特性,子类获取的log字段实际上相当于LogFactory.getLog(Student.class)
,但却是从父类继承而来,并且无需改动代码。
3)info(String, Throwable)
Commons Logging
的日志方法,除了标准的info(String)外,还提供了一个非常有用的重载方法:info(String, Throwable)
,这使得记录异常更加简单:
try {
...
} catch (Exception e) {
log.error("got exception!", e);
}
他の者にできたか?ここまでやれたか?この先できるか?いいや、仆にしかできない!
使用Commons Logging的更多相关文章
- Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
学习架构探险,从零开始写Java Web框架时,在学习到springAOP时遇到一个异常: "C:\Program Files\Java\jdk1.7.0_40\bin\java" ...
- Spring 使用 SLF4J代替 Commons Logging 写日志 异常
项目的日志更换成slf4j和logback后,发现项目无法启动.错误提示 Caused by: java.lang.NoClassDefFoundError: Lorg/apache/commons/ ...
- org.apache.log4j与org.apache.commons.logging这两个包有什么区别
apache common logging是一种log的框架接口,它本身并不实现log记录的功能,而是在运行时动态查找目前存在的日志库,调用相关的日志函数,从而隐藏具体的日志实现log4j是具体的日志 ...
- 使用slf4j取代Apache Commons Logging
假如你正在开发应用程序所调用的组件当中已经使用了 JCL(之前叫 Jakarta Commons Logging,JCL) 的,还有一些组建可能直接调用了 java.util.logging,这时你需 ...
- com.sun.org.apache.commons.logging.LogConfigurationException: java.lang.NullPointerException
在日志中, 查看导入的包是否是 import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory;
- Taxonomy of class loader problems encountered when using Jakarta Commons Logging(转)
Acknowledgments I would like to thank Jacob Kjome for reviewing early drafts of this document. His c ...
- Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
1.错误叙述性说明 2014-7-12 0:38:57 org.apache.catalina.core.ApplicationContext log 信息: No Spring WebApplica ...
- java.lang.ClassNotFoundException: org.apache.commons.logging.Log
严重: A child container failed during startjava.util.concurrent.ExecutionException: org.apache.catalin ...
- java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory解决方案
导入commons-logging-1.2.jar辅助类包即可. 报错提示: Exception in thread "main" java.lang.NoClassDefFoun ...
- 廖雪峰Java3异常处理-2断言和日志-3使用Commons Logging
Commons Logging是Apache创建的日志模块: 可以挂接不同的日志系统 可以通过配置文件指定挂接的日志系统 自动搜索并使用Log4j 如果Log4j不存在,使用JDK Logging(J ...
随机推荐
- Python语言学习:homework2
三级菜单 # Author:Crystal data = { '北京':{ "昌平":{ "沙河":["oldbay","test ...
- Java多线程求和
package test; import java.util.concurrent.*; import java.util.concurrent.locks.Lock; import java.uti ...
- Django专题-auto模块
Django自带的用户认证 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Djang ...
- 绿洲作业第二周 - Y3每日中文学习任务清单
1. 本周仍是古诗学习周,老师已在“最美诵读”上布置本周需完成的任务,请孩子在“最美诵读”小程序中,结合老师发的学习任务清单,合理安排时间进行学习.如果孩子另有学习安排,可在周日(2.23)23:59 ...
- grep 提取百度网盘的链接
弄到一堆学习资料,都是网盘地址,其中有很多失效了,不想一个个试 3.3第20季:HTML5特效实战 https://pan.baidu.com/s/1kVBrpZp 3.4第21季:3小时玩转微信小程 ...
- CentOS7 安装配置笔记
CentOS7 安装配置笔记 1.通过镜像安装 CentOS7 ==============================* 使用 UltraISO 9.7 或者 rufus-3.5p 制作ISO的 ...
- 视觉SLAM算法框架解析(1) PTAM
版权声明:本文为博主原创文章,未经博主允许不得转载. 本系列文章旨在总结主流视觉SLAM算法的框架,对比各个算法在子模块的差异,最终提炼出融合各个算法优点的架构. PTAM[1]是视觉SLAM领域里程 ...
- sql 坐标距离排序计算距离(转)
如果两个坐标的列是(x1,y1).(x2,y2),那么他们之间的距离:SQRT((X1-X2)*(X1-X2)+(Y1-Y2)*(Y1-Y2)) sql排序 SELECT * FROM m_store ...
- mean|mode|median|sample的表达方式
Measures of Center measures of central tendency:the center or most typical value:average Mean:its ar ...
- 客户端和后台交互日期注意点 sqlite日期字段使用Date类型的情况下
不要直接传递时间类型 一般把时间格式化字符串后传递 不要传递Date().getTime() 毫秒数 非要使用的话需要在后台处理 传递的毫秒数 - TimeZone.getDefault().get ...