本章简要介绍了如何配置日志记录和查看服务器日志。它包含以下各节:
Application Server 使用 JSR 047 中指定的 Java 2 平台日志记录 API。Application Server 日志信息记录在服务器日志中,通常可以在 domain-dir/logs/server.log 中找到。
domain-dir/logs 目录中除了包含服务器日志外,还包含另外两种日志。access 子目录中包含 HTTP 服务访问日志,tx 子目录中包含事务服务日志。有关这些日志的信息,请查阅管理控制台联机帮助。
Application Server 组件生成日志记录输出。应用程序组件也可以生成日志记录输出。
应用程序组件可以使用 Apache Commons Logging Library 来记录消息。但是,建议采用平台标准 JSR 047 API 以获得更好的日志配置。
日志记录遵循以下统一格式:
[#|yyyy-mm-ddThh:mm:ss.SSS-Z|Log Level|ProductName-Version|LoggerName|Key Value Pairs|Message|#]
例如:
[#|2004-10-21T13:25:53.852-0400|INFO|sun-appserver-e8.1|javax.enterprise. system.core|_ThreadID=13;|CORE5004: Resource Deployed: [cr:jms/DurableConnectionFactory].|#]
在本示例中,
[# 和 #] 标记该记录的开始和结束。
垂直条 (|) 用于分隔记录字段。
2004-10-21T13:25:53.852-0400 指明了日期和时间。
日志级别为 INFO。日志级别可以是以下任何值:SEVERE、WARNING、INFO、CONFIG、FINE、FINER 和 FINEST。
产品名称及版本为 sun-appserver-ee8.1。
日志程序名称是用于标识日志模块的来源的分层日志程序名称空间,在此示例中为 javax.enterprise.system.core。
关键字值对为关键字名称和值,通常为线程 ID,如 _ThreadID=14;。
消息是日志信息的文本。对于所有 Application Server SEVERE 和 WARNING 消息及多种 INFO 消息,其均以包含模块代码和数值的消息 ID 开头(在此示例中为 CORE5004)。
在以后的版本中,可能会更改或增强日志记录格式。
本节介绍了如何为使用 java.util.logging 包并访问 Application Server 的日志记录子系统的应用程序配置自定义日志记录级别。
java.util.logging 包提供了分层名称空间,可以在该名称空间中创建日志程序实例。是否将特定日志记录输出到 Application Server 实例的日志文件中取决于日志记录的日志级别以及指定的日志级别。
Application Server 日志程序设置配置可提供二十多种日志记录模块,允许对 Application Server 自身的内部日志记录进行精细控制。还有一个选项可用于创建其他自定义日志模块,它通过指定模块名称和该模块应使用的日志记录级别来创建。
其中重要的一点是日志程序是静态名称,且不提供继承性。因此,如果为自定义日志程序配置了名称 com.someorg.app,在某个应用程序尝试查找日志程序 com.someorg.app.submodule 时,将不会为该应用程序提供继承了 com.someorg.app 中设置的日志程序。相反,com.someorg.app.submodule 将具有日志级别设置为 INFO 或更高级别的默认日志程序。
如果应用程序需要使用日志程序继承,则可以通过编辑用于运行 Application Server 的 Java 运行时的 logging.properties 文件来进行配置。例如,如果将以下条目添加到 logging.properties 文件中,则会导致 com.someorg.app.submodule 在创建时继承相同的 FINE 级别:
com.someorg.app.level = FINE
有关 Java 日志记录 API 的更多详细信息,请参阅 http://java.sun.com/j2se/1.5.0/docs/api/java/util/logging/package-summary.html 中的 Java 文档以及其他 java.util.logging 类。
Application Server 为它的每个模块都提供了日志程序。下表按照每个日志程序的模块名称和名称空间在管理控制台的“日志级别”页面中的显示方式以字母顺序列出每个日志程序的模块名称和名称空间。“日志级别”页面中未显示表中最后三个模块。
表 15–1 Application Server 日志程序名称空间
模块名称 |
名称空间 |
---|---|
管理 |
javax.enterprise.system.tools.admin |
类加载器 |
javax.enterprise.system.core.classloading |
CMP |
javax.enterprise.system.container.cmp |
配置 |
javax.enterprise.system.core.config |
连接器 |
javax.enterprise.resource.resourceadapter |
CORBA |
javax.enterprise.resource.corba |
部署 |
javax.enterprise.system.tools.deployment |
EJB 容器 |
javax.enterprise.system.container.ejb |
JavaMail |
javax.enterprise.resource.javamail |
JAXR |
javax.enterprise.resource.webservices .registry |
JAX-RPC |
javax.enterprise.resource.webservices.rpc |
JDO |
javax.enterprise.resource.jdo |
JMS |
javax.enterprise.resource.jms |
JTA |
javax.enterprise.resource.jta |
JTS |
javax.enterprise.system.core.transaction |
MDB 容器 |
javax.enterprise.system.container.ejb.mdb |
命名 |
javax.enterprise.system.core.naming |
节点代理(仅限于 Enterprise Edition) |
javax.ee.enterprise.system.nodeagent |
根目录 |
javax.enterprise |
SAAJ |
javax.enterprise.resource.webservices.saaj |
安全性 |
javax.enterprise.system.core.security |
服务器 |
javax.enterprise.system |
同步(仅限于 Enterprise Edition) |
javax.ee.enterprise.system.tools .synchronization |
实用程序 |
javax.enterprise.system.util |
验证器 |
javax.enterprise.system.tools.verifier |
Web 容器 |
javax.enterprise.system.container.web |
核心 |
javax.enterprise.system.core |
System Output (System.out.println) |
javax.enterprise.system.stream.out |
System Error (System.err.println) |
javax.enterprise.system.stream.err |