Logger
来源:互联网 发布:高分辨率数据 编辑:程序博客网 时间:2024/06/11 11:25
http://www.iteye.com/problems/2408
使用Logger需要创建一个 log4j.properties文件,然后在classpath设置路径
比如如果将log4j.properties放在BA1Automation\config下,然后再classpath需要设置<classpathentry kind="src" path="config"/>
this.getClass()得到什么?
this 表示当前对象的引用;
getClass() 是 java.lang.Object 中的方法,它返回一个对象的运行时类;
this.getClass() 就是返回当前对象的运行时类。
Logger.getLogger(this.getClass())又得到什么?
他得到一个Logger对象,这个Logger将监视this.getClass()这个运行时类,这个运行时类里面你可能创建了log.info(""), log.debug(""),……等语句,那么这些语句就会根据你预先定义的Logger级别来输出你的日志。就跟你写System.out.print("")一样,不同的是Logger可以根据需要按级别进行日志输出控制。(当然这只是一方面)
Logger.getLogger(this.getClass())这样写,有什么好处?
这样一来你只需要在基类中写一行代码就可以了,子类可以直接使用,这也是复用的原则。
如果你有一个类A,你可以在A类的开始这么写
Logger log=Logger.getLogger(A.class)
这就定死了这个Logger只监视A类本身如果B类继承A类,你创建B类对象时,上面创建的log对象对B是不起作用的。这就就是hard code.
而Logger.getLogger(this.getClass())就不同,你创建B对象时,this就是B对象的引用了,见下列代码:
- package com.zhaipuhong.j2se.keywords;
- public class ThisKeywordsA {
- protected String className = this.getClass().toString();
- public ThisKeywordsA(){
- System.out.println("ThisKeywordsA className == " + className);
- }
- }
- package com.zhaipuhong.j2se.keywords;
- public class ThisKeywordsBextends ThisKeywordsA{
- public ThisKeywordsB(){
- System.out.println("ThisKeywordsB className == " + className);
- }
- /**
- * @param args
- */
- public staticvoid main(String[] args) {
- // TODO Auto-generated method stub
- ThisKeywordsB b = new ThisKeywordsB();
- }
- }
运行结果:
ThisKeywordsA className == class com.zhaipuhong.j2se.keywords.ThisKeywordsB
ThisKeywordsB className == class com.zhaipuhong.j2se.keywords.ThisKeywordsB
由于B继承A,A对象首先被创建(请不要考虑抽象类和接口^_^)然后作为B对象的字对象创建B 对象. 此时的Logger就是B对象的一部分,可以为B对象所用。
- Logger
- logger
- logger
- logger
- Logger
- Logger
- Logger
- Logger
- Logger logger = Logger.getLogger(this.getClass())
- ruby logger
- Logger class
- Remote logger
- logger.debug
- SHELL: logger
- Poco::Logger
- Logger补充
- Logger 详解
- Logger级别
- NSLog 一些常用的数据类型 CGRect NSArray等
- sensor关键数据备份流程
- Ubuntu 安装rpm包的方法
- Tomcat调试信息缓冲修改
- IOS二维码拍照相机自定义界面实例
- Logger
- solaris新建用户
- 《Axure 6.5超短篇笔记》——“部件的范围”条件非矩形形状
- VLC简介及使用说明
- android取得系统时间
- 客户端加入到域时,突然提示“找不到网络路径”错误
- vmware网络连接问题
- 使用kdesvn提交文件出现Aborting commit:'.lcd1602.ko.cmd' remains in conflict错误提示
- socket中的select函数使用