Logger是log4j操作的核心对象,Logger的Name是区分大小写的,而且支持层级命名规则,类似于Java类的定义,通过命名空间来区别。
Logger的等级制度
如果1个Logger的name前缀是.及祖辈的Logger的name,那么就说1个Logger是另1个Logger的祖先。类似地,"java"是"java.util"这个Logger的父亲,是"java.util.Vector"这个Logger的祖先。这种命名模式与很多开发语言非常相似。
Root Logger位于Logger最高层级,也就是说,它是所有Logger的祖先。它有2个特别的地方:
1)、它总是存在;
2)、不能用name来获取它;
调用类的静态方法Logger.getRootLogger可以获取Root Logger。所有其他的Loggers都是调用类的静态方法Logger.getLogger来实例化的。Logger.getLogger需要传入要创建的Logger 的name作为参数。Logger类的一些基本的方法如下:
package org.apache.log4j;
public class Logger {
// Creation & retrieval methods:
public static Logger getRootLogger();
public static Logger getLogger(String name);
// printing methods:
public void trace(Object message);
public void debug(Object message);
public void info(Object message);
public void warn(Object message);
public void error(Object message);
public void fatal(Object message);
// generic printing method:
public void log(Level l, Object message);
}
你也可以给Logger被指定1个级别,可选的级别有:TRACE, DEBUG, INFO, WARN, ERROR , FATAL。这些可选的级别都定义在org.apache.log4j.Level类中。
如果给定的Logger没有指定level,那么它会从最亲近的父辈中继承level。为了确保所有的Logger都能继承到level,所以root Logger总是有1个level。下面例子给出关于level继续的具体说明。
例子1:3个都没有指定level,所以都使用root的level。
|
Logger Name |
指定的level |
最终的level |
|
root |
Proot |
Proot |
|
X |
none |
Proot |
|
X.Y |
none |
Proot |
|
X.Y.Z |
none |
Proot |
|
Logger Name |
指定的level |
最终的level |
|
root |
Proot |
Proot |
|
X |
Px |
Px |
|
X.Y |
Pxy |
Pxy |
|
X.Y.Z |
Pxyz |
Pxyz |
|
Logger Name |
指定的level |
最终的level |
|
root |
Proot |
Proot |
|
X |
Px |
Px |
|
X.Y |
none |
Px |
|
X.Y.Z |
Pxyz |
Pxyz |
|
Logger Name |
指定的level |
最终的level |
|
root |
Proot |
Proot |
|
X |
Px |
Px |
|
X.Y |
none |
Px |
|
X.Y.Z |
none |
Px |
本文介绍 Log4j 中 Logger 的层级结构及其命名规则,并解释如何为 Logger 设置不同级别的日志记录,包括 TRACE, DEBUG, INFO, WARN, ERROR 和 FATAL。此外还详细阐述了 Logger 的继承特性。
1244

被折叠的 条评论
为什么被折叠?



