除了处理ZUML页面,ZK发行版包括了许多技术和工具。本章提供了一些关于它们的基本信息。感兴趣的读者可以参考Javadoc 获取详细的 API。
Package: org.zkoss
.util.logging.Log
ZK使用的logger基于标准的logger,java.util.Logger
。但是,我们将其包装成 org.zkoss.util.logging.Log
,以使其更高效。典型的使用方法如下。
import org.zkoss.util.logging.Log; class MyClass { private static final Log log = Log.lookup(MyClass.class); public void f(Object v) { if (log.debugable()) log.debug("Value is "+v); } }
由于ZK使用了标准的 logger记录消息,通过配置你使用Web 服务器的logging,可以控制记录什么。如何配置Web 服务器的logging依服务器的不同而不同。请参考手册。或者,你可以使用ZK提供的logging配置机制,如下所述。
[注]: 默认情况下,所有的ZK log实例都会被映射到同一个名为o
r
g.zkoss
的 Java logger,主要为了获得更好的性能。若你想控制日志级别以适于个别类(If you want to control the log level up to individual class),则必须要调用下面的语句来打开对于等级(hierarchy)的支持。
Log.setHierarchy(true);
[注]: 若你使用WEB-INF/zk.xml
配置了日志级别,就像在下面章节描述的那样,等级支持会被自动禁用。
除了配置Web服务器的logging,你可以使用ZK提供的logging 配置机制。默认是禁用的。为启用它,你必须在WEB-INF/zk.xml
内指定下列内容。更多细节请参考the Developer's Reference 的附录B(Appendix B)。
<zk> <log> <log-base>org.zkoss</log-base> </log> </zk>
另外,通过调用LogService
的init
方法,你可以手动启用logging 配置机制,如下。
org.zkoss.util.logging.LogService.init("org.zkoss", null);
若你不仅想记录org.zkoss
而是所有,可以为log-base
指定空。
一旦启用了此机制,通过在启动时搜索类路径(classpath)和一些特定的位置(见下面),ZK会搜寻i3-log.conf
。若找到了,ZK会加载它的内容并初始化日志级别。然后,ZK会一直监视次此文件,若文件被修改则会重新加载此文件内容。
i3-log.conf
的一个事例如下。
org.zkoss.zk.ui.impl.UiEngineImpl=FINER #Make the log level of the specified class to FINERorg.zkoss.zk.ui.http=DEBUG #Make the log level of the specified package to DEBUG org.zkoss.zk.au.http.DHtmlUpdateServlet=INHERIT #Clear the log level of a specified class such that it inherits what #has been defined above (Default: INFO) org.zkoss.zk.ui=OFF #Turn off the log for the specified package org.zkoss=WARNING #Make all log levels of ZK classes to WARNING except those specified here
首先,ZK会在类路径(classpath)查找此文件。若未找到,则会在conf
目录查找。
应用程序服务器 |
位置 |
---|---|
Tomcat |
将 |
其它 |
首先试试conf目录。若不工作,你可以设置被称为 |
一些日志会在加载i3-log.conf
之前产生。若你想完全禁用所有日志,则必须配置Web服务器[67]的 logging,或当配置WEB-INF/web.xml
内的DHtmlLayoutServlet
时指定log-level
。细节请参考the Developer's Reference。
<servlet> <servlet-name>zkLoader</servlet-name> <servlet-class>org.zkoss.zk.ui.http.DHtmlLayoutServlet</servlet-class> <init-param> <param-name>log-level</param-name> <param-value>OFF</param-value> </init-param> ...