Log4j组件构成
Log4j由三个重要的组件构成:
1.日志信息的优先级(Logger)
2.日志信息的输出目的地(Appender)
3.日志信息的输出格式(Layout)。
概要:
日志信息的优先级从高到低有ERROR、WARN、 INFO、DEBUG,分别用来指定这条日志信息的重要程度;
日志信息的输出目的地指定了日志将打印到控制台还是文件中;
而输出格式则控制了日志信息的显示内容。
Log4j介绍
Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式,通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。log4j--log for java (java的日志) .
Log4j下载地址: http://logging.apache.org/log4j/2.x/download.html
Log4j配置文件的格式
Log4j支持两种配置文件格式:
1. XML格式的文件
2. properties格式的文件
也可以完全不使用配置文件,而是在代码中配置Log4j环境。但是,使用配置文件将使您的应用程序更加灵活。
Log4j定义配置文件
1.配置根Logger
其语法为:
参数说明:
level 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。
Off: 最高等级,用于关闭所有日志记录
Fatal: 指出每个严重的错误事件将会导致应用程序的退出。
Error: 指出虽然发生错误事件,但仍然不影响系统的继续运行。
Warn: 表明会出现潜在的错误情形
Info: 一般用在粗粒度级别上,强调应用程序的运行全程
Debug: 一般和在粗粒度级别上,强调应用程序的运行全程。
All: 最低等级,用于打开所有日志记录。
Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。
appenderName就是指日志信息输出到哪个地方,可以同时指定多个输出目的地。
2.配置日志信息输出目的地Appender
其语法为:
log4j.appender.appenderName.option1 = value1
...
log4j.appender.appenderName.option = valueN
Log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生新文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
3.配置日志信息的格式
语法为:
log4j.appender.appenderName.layout.option1 = value1 …
lo
java.lang.Object
java.lang包在使用的时候无需显示导入,编译时由编译器自动导入。
Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类。
Object类是Java中唯一没有父类的类。
其他所有的类,包括标准容器类,比如数组,都继承了Object类中的方法。
Object类中的方法
构造方法:public Object()
文档中的类概览:
Java中的每个类都具有定义在Object类中的这些方法。
protected Object clone()
Creates and returns a copy of this object.
Object类中的说明是:
protected Object clone()
throws CloneNotSupportedException
这个方法比较特殊:
首先,使用这个方法的类必须实现java.lang.Cloneable接口,否则会抛出CloneNotSupportedException异常。
Cloneable接口中不包含任何方法,所以实现它时只要在类声明中加上implements语句即可。
第二个比较特殊的地方在于这个方法是protected修饰的,覆写clone()方法的时候需要写成public,才能让类外部的代码调用。
boolean equals(Object obj)
Indicates whether some other object is "equal to" this one.
“==”运算符判断两个引用是否指向同一个对象。
对于Object类的equals()方法来说,它判断调用equals()方法的引用于传进来的引用是否一致,即这两个引用是否指向的是同一个对象。
Object类中的equals()方法如下:
{
return (this == obj);
}
即Object类中的equals()方法等价于==。
只有当继承Object的类覆写(override)了equals()方法之后,继承类实现了用equals()方法比较两个对象是否相等,才可以说equals()方法与==的不同。
int hashCode()
Returns a hash code value for the object.
当你覆写(override)了equals()方法之后,必须也覆写hashCode()方法。
这个方法返回一个整型值(hash code value),如果两个对象被equals()方法判断为相等,那么它们就应该拥有同样的hash code。
String toString()
Returns a string representation of the object.
当打印引用,如调用System.out.println()时,会自动调用对象的toString()方法,打印出引用所指的对象的toString()方法的返回值,因为每个类都直接或间接地继承自Object,因此每个类都有toString()方法。
Object类中的toString()方法定义如下:
{
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
参考资料推荐
官方文档和jdk中的源代码src。
帮助格式的文档下载:http://www.allimant.org/javadoc/index.php
推荐皮皮书屋:http://www.ppurl.com/
本文链接