Log4j 的组件说明
日志记录器(Logger)是日志处理的核心组件。log4j具有5种正常级别(Level)。 日志记录器(Logger)的可用级别Level (不包括自定义级别 Level), 以下内容就是摘自log4j API (http://jakarta.apache.org/log4j/docs/api/index.html):
-
static Level DEBUG
DEBUG Level指出细粒度信息事件对调试应用程序是非常有帮助的。
-
static Level INFO
INFO level表明 消息在粗粒度级别上突出强调应用程序的运行过程。
-
static Level WARN
WARN level表明会出现潜在错误的情形。
-
static Level ERROR
ERROR level指出虽然发生错误事件,但仍然不影响系统的继续运行。
-
static Level FATAL
FATAL level指出每个严重的错误事件将会导致应用程序的退出。
另外,还有两个可用的特别的日志记录级别: (以下描述来自log4j API http://jakarta.apache.org/log4j/docs/api/index.html):
-
static Level ALL
ALL Level是最低等级的,用于打开所有日志记录。
-
static Level OFF
OFF Level是最高等级的,用于关闭所有日志记录。
日志记录器(Logger)的行为是分等级的。
有很多方法可以创建一个日志记录器(Logger),下面方法可以取回root日志记录器:
Logger logger = Logger.getRootLogger(); |
Logger logger = Logger.getLogger("MyLogger"); |
比较常用的用法,就是根据类名实例化一个静态的全局日志记录器:
static Logger logger = Logger.getLogger(test.class); |
所有这些创建的叫"logger"的日志记录器都可以用下面方法设置级别:
logger.setLevel((Level)Level.WARN); |
Appender 控制日志怎样输出。下面列出一些可用的Appender(log4j API中所描述的 http://jakarta.apache.org/log4j/docs/api/index.html):
-
ConsoleAppender:使用用户指定的布局(layout) 输出日志事件到System.out或者 System.err。默认的目标是System.out。
-
DailyRollingFileAppender 扩展FileAppender,因此多个日志文件可以以一个用户选定的频率进行循环日志记录。
-
FileAppender 把日志事件写入一个文件
-
RollingFileAppender 扩展FileAppender备份容量达到一定大小的日志文件。
-
WriterAppender根据用户的选择把日志事件写入到Writer或者OutputStream。
-
SMTPAppender 当特定的日志事件发生时,一般是指发生错误或者重大错误时,发送一封邮件。
-
SocketAppender 给远程日志服务器(通常是网络套接字节点)发送日志事件(LoggingEvent)对象。
-
SocketHubAppender 给远程日志服务器群组(通常是网络套接字节点)发送日志事件(LoggingEvent)对象。
-
SyslogAppender给远程异步日志记录的后台精灵程序(daemon)发送消息。
-
TelnetAppender 一个专用于向只读网络套接字发送消息的log4j appender。
还可以实现 Appender 接口,创建以自己的方式进行日志输出的Appender。
ConsoleAppender appender = new ConsoleAppender(new PatternLayout()); |
FileAppender appender = null;try {appender = new FileAppender(new PatternLayout(),"filename");} catch(Exception e) {} |
FileAppender(Layout layout, String filename)实例化一个FileAppender并且打开变量"filename"指定的文件。 |
FileAppender(Layout layout, String filename, boolean append)实例化一个FileAppender并且打开变量"filename"指定的文件。 |
WriterAppender appender = null;try {appender = new WriterAppender(new PatternLayout(),new FileOutputStream("filename"));} catch(Exception e) {} |