Sun ONE logo     上一个      目录      索引      下一个     
Sun ONE Application Server 7, Update 1 管理员指南



使用日志

本module介绍了 Sun ONE Application Server 的日志特征和功能。此外,还讨论了日志可能使用的各种组件。

本module包括以下主题:

关于日志

当用于应用程序时,日志是一种非常有用的调试和诊断工具。它还可以提高开发者的生产效率。应用程序服务器自身的日志输出可以帮助用户标识和诊断服务器配置以及有关部署的问题。

Sun ONE Application Server 中的日志使用 Java 日志 API。Sun ONE Application Server 收集日志信息并将其存储在名为 access.logserver.log 的日志文件中,这两个日志文件位于 logs 目录中。用户也可以将日志定向到自己的日志文件。

除了消息本身以外,日志消息还可以提供更多的信息。所提供的附加信息包括:

  • 事件的日期和时间。
  • 事件的日志级别。应用程序服务器指定的日志级别 ID 或名称。
  • 进程 ID (PID)。应用程序服务器进程的 PID。
  • (可选)虚拟服务器 ID (vsid)。生成该消息的 vsid。
  • 消息 ID。子系统和四位整数。
  • 消息数据。

附加消息信息的种类和顺序取决于日志使用的平台以及该平台启用的日志服务。要启用日志消息的虚拟服务器 ID,请参见“配置日志服务”

UNIX 和 Windows 平台上的日志

本节介绍如何创建日志文件。此外,还包括以下主题:

server.log 中的默认日志

在 UNIX 和 Windows 平台上,日志文件都在 server.log(位于 log 子目录中)中创建。来自一个实例的所有服务器组件和虚拟服务器的日志都存储在此文件中。

可以设置整个服务器的默认日志级别,但是,也可以在子系统级别上覆盖某个特定子系统的默认日志级别。还可以将 stdoutstderr 重定向到服务器的事件日志,将日志输出定向到操作系统的系统日志。此外,还可以将 stdoutstderr 内容定向到服务器的事件日志。默认情况下,日志消息除了发送到指定的服务器日志文件以外,还将发送到 stderr

另一个可用的功能是使用日志消息记录虚拟服务器 ID。当使用多个虚拟服务器将消息记录到同一个日志文件时,此功能很有用。可以选择将日志消息写入系统日志。执行此操作时,不会在 server.log 文件中进行日志记录,而是使用 UNIX 中的 syslog 日志服务或 Windows 平台上的系统日志服务来生成和管理日志。

还可以使用 server.xml 属性来控制此文件的内容。有关 server.xml 文件的详细信息,请参见《Sun ONE Application Server Administrator's Configuration File Reference》。

server.log 的示例

以下是 server.log 的一个示例。

时间标记类,日志级别,(PID vsid [可选]):消息 ID:消息

[01/Aug/2002:11:39:31] INFO ( 1224):CORE1116:Sun ONE Application Server 7.0

[01/Aug/2002:11:39:36] INFO ( 1224):CORE5076:Using [Java HotSpot(TM) Server VM, Version 1.4.0_02-20020712] from [Sun Microsystems Inc.]

[01/Aug/2002:11:39:50] INFO ( 1224):JMS5023:JMS service successfully started.Instance Name = domain1_server1, Home = [D:\install_7_29\imq\bin].

[01/Aug/2002:11:39:53] INFO ( 1224):CIS0056:Creating TCP ServerConnection at [EndPoint [IIOP_CLEAR_TEXT:192.18.145.66:3700:false]]

[01/Aug/2002:11:39:53] INFO ( 1224):CIS0057:Created TCP ServerConnection at [EndPoint [IIOP_CLEAR_TEXT:192.18.145.66:3700:false]]

[01/Aug/2002:11:39:54] INFO ( 1224):CIS0054:Creating TCP Connection from [-] to [EndPoint [IIOP_CLEAR_TEXT:192.18.145.66:3700:false]]


注意

重定向与预编译的 JSP 相关的日志消息:

默认情况下,与预编译的 JSP 相关的日志消息存储在管理服务器日志文件中,该文件位于 {domain_root}/{domain_name}/admin-server/logs/server.log 中。

因为所有的消息都记录到同一个文件,所以使用预编译的 JSP 部署应用程序时产生的异常或错误消息可能会淹没在公共日志文件的大量消息中。当将多个应用程序部署到给定域下的多个实例时,需要仔细检查管理服务器中的日志消息是否有关于特定应用程序 JSP 的异常信息。这将造成冗余。

因此,最好在服务器实例的 server.log 文件(而不是管理服务器的 server.log 文件)中记录与使用预编译的 JSP 部署的应用程序的相关消息。

要将日志消息重定向到 Sun ONE Application Server 实例的 server.log 文件,请在管理员界面中更改日志文件的路径。详细信息,请参见配置日志服务



使用 syslog 记录日志

syslog 适用于要求集中记录日志的稳定的可操作环境。在经常要求日志输出以进行诊断和调试的环境中,单个的服务器实例或虚拟服务器日志可能比较容易管理。



注意

  • 服务器实例和管理服务器的所有日志数据都在一个文件中可能难于读取和调试。建议将 syslog 主日志文件仅用于已部署且正在顺利运行的应用程序。
  • 日志消息将与 Solaris 守护程序应用程序中的所有其它日志相混合。


通过将 syslog 日志文件与 syslogd 以及系统日志守护程序一起使用,可以将 syslog.conf 文件配置为:

  • 将消息记录到相应的系统日志
  • 将消息写入系统控制台
  • 将日志消息转发到一组用户,或通过网络将其转发到另一台主机上的另一个 syslogd


  • 注意

    安装 Sun ONE Application Server 之后,该服务器的日志服务元素属性 use-system-logging 并没有启用。这说明在默认情况下日志不会定向到 UNIX 上的 syslog 或 Windows 平台上的 Windows 事件日志。可以按照《Sun ONE Application Server Configuration File Reference》中所述,启用 server.xml 的 Server 元素中的日志服务元素属性,将日志定向到 syslog 或 Windows 事件日志。在设置 use-system-logging 之前,请参见第 107 页的“日志文件管理”。



配置 syslog

要提高可管理性和可读性,可以通过配置 /etc 目录中的 syslog.conf 将严重程度不高的消息定向到单独的文件中。

配置 syslog 的步骤:

  1. 要将严重程度不高的消息定向到单独的文件中,请将以下命令添加到 Solaris 中的 syslog.conf 文件中:
  2. daemon.debug /var/adm/iasdebug



    注意

    如果将日志消息定向到 Windows 事件日志,将仅记录严重级别为 INFOWARNINGSEVEREALERTFATAL 的消息。



  3. syslogd 发出挂起信号。可以使用以下命令完成此操作:
  4. kill -HUP <PID syslogd>

  5. 转到管理界面中的管理服务器并选择“Write to system log”选项。保存并应用所做的更改。重新启动管理服务器,使更改生效。

以下是一个已配置的 Solaris syslog.conf 文件的示例:

#ident"@(#)syslog.conf1.598/12/14 SMI"/* SunOS 5.0 */

#

# Copyright (c) 1991-1998 by Sun Microsystems, Inc.

# All rights reserved.

#

# syslog configuration file.

#

# This file is processed by m4 so be careful to quote (`') names

# that match m4 reserved words.Also, within ifdef's, arguments

# containing commas must be quoted.

#

*.err;kern.notice;auth.notice/dev/sysmsg

*.err;kern.debug;mail.crit/var/adm/messages

daemon.info;daemon.err;daemon.debug;daemon.alert;daemon.crit;daemon.warning /var/adm/iaslog

daemon.debug/var/adm/iasdebug

#daemon.notice;/var/adm/iaslognotice

#daemon.warning;/var/adm/iaslogwarning

#daemon.alert;/var/adm/iaslogalert

#daemon.err;/var/adm/iaslogerr

#*.alert;kern.err;daemon.erroperator

#*.alertroot

*.emerg*

# if a non-loghost machine chooses to have authentication messages

# sent to the loghost machine, un-comment out the following line:

#auth.noticeifdef(`LOGHOST', /var/log/authlog, @loghost)

mail.debugifdef(`LOGHOST', /var/log/syslog, @loghost)

#

# non-loghost machines will use the following lines to cause "user"

# log messages to be logged locally.

#

ifdef(`LOGHOST', ,

user.err/dev/sysmsg

user.err/var/adm/messages

user.alert`root, operator'

user.emerg*

)

详细信息,请参见 syslog.conf 手册页。

要使对 syslog.conf 所做的任何更改生效,都需要重新启动 Sun ONE Application Server。

因为将日志记录到 syslog 意味着来自所有 Sun ONE Application Server 以及其它守护程序应用程序的日志都存储在同一个文件中,所以日志消息中增加了以下信息,以便标识来自特定服务器或虚拟服务器实例中专用于 Sun ONE Application Server 的消息:

  • 唯一消息 ID
  • 时间标记类
  • 实例名
  • 程序名(appservdappserv-wdog
  • 进程 ID(应用程序服务器进程的 PID)
  • 线程 ID(可选)
  • 服务器 ID

可以在 server.xml 文件中为服务器实例和虚拟服务器实例配置日志服务。针对虚拟服务器实例的日志服务配置在“关于虚拟服务器和日志”中介绍。针对服务器实例的日志服务配置在“通过管理界面配置日志”中介绍。

通过管理界面可以为可用的子系统和组件配置日志级别。

要获得有关 UNIX 操作环境所使用的 syslog 记录机制的详细信息,请在出现终端提示后使用以下手册命令:

man syslog

man syslogd

man syslog.conf

syslog 消息的示例

以下是 syslog 消息的一个示例。

时间标记类,主机名 [instance_name],[子系统],[vsid],消息 ID,日志级别,消息数据

Jul 19 14:33:18 strange /usr/lib/nfs/lockd[164]:[ID 599441 daemon.info] Number of servers not specified.Using default of 20.

Jul 19 14:33:20 strange ntpdate[181]:[ID 558275 daemon.notice] adjust time server 192.18.56.149 offset 0.06702 6 sec

Jul 19 14:38:13 strange xntpd[248]:[ID 204180 daemon.info] synchronisation lost

Jul 19 14:38:47 strange server1 appservd[374]:[ID 702911 daemon.info] INFO ( 374):CORE1116:Sun ONE Application Server 7.0

Jul 19 14:38:48 strange server1 appservd[374]:[ID 702911 daemon.info] FINE ( 374):Collecting statistics for up to 1 processes with 128 threads, 200 listen sockets, and 1000 virtual servers

使用 Windows 事件日志记录日志

有关 Windows 操作环境所使用的事件日志机制的详细信息,请在 Windows 帮助系统索引中查找关键字事件日志

使用日志级别

本节介绍了各种日志级别以及如何为每个 Sun ONE Application Server 子系统指定日志级别。

其中包括以下主题:

关于日志级别

Sun ONE Application Server 使用标准的 JDK 1.4 日志级别进行选择性的信息记录。除了标准的 JDK 日志级别以外,Sun ONE Application Server 还添加了一些日志级别,旨在与 server.log 进行更直观的映射并与 Solaris 进行紧密的集成。

当路由到 server.log 时,日志消息还将映射到在“映射到 server.log 的 Sun ONE Application Server 日志级别”中定义的日志级别。



注意

管理服务器和默认应用程序服务器实例的 server.log 文件(或 syslog)的默认日志级别为 INFO。当应用程序服务器实例使用默认的日志级别时,将记录错误消息和信息消息。要避免记录此类消息,请在 server.xml 文件或管理服务器和服务器实例的管理界面中将日志级别更改为 WARNING 或 SEVERE。

服务器的默认日志级别可以在 log-service 元素中设置。此操作将影响所有日志级别设置为“默认”的元素。



可以为每一个启用了日志记录的 Sun ONE Application Server 子系统指定日志级别。压缩运行期间所记录的消息信息总量时,日志级别很有用。要使用的子系统的级别是在 server.xml 文件中指定的。可以从管理界面为选定的子系统指定日志级别,也可以直接编辑 server.xml 文件以设置选定子系统所需的日志级别。



警告

server.xml 文件进行手动编辑可能会产生语法错误,从而导致服务器启动失败。手动编辑配置文件的指南将在《Sun ONE Application Server Administrator's Configuration File Reference》中的“Manually Editing Configuration Files”小节中进行介绍。



“JMS 服务的日志级别”图中显示了通过管理界面设置日志级别的示例。要直接在 server.xml 文件中为每个子系统或组件设置日志级别,请参见《Sun ONE Application Server Administrator's Configuration File Reference》。

“日志级别”表中所描述的日志级别符合 JDK1.4 日志 API 规范的要求。但是,日志级别 ALERT 和 FATAL 是专门用于 Sun ONE Application Server 的,而不能用于 JDK1.4 日志 API 规范。

下表按严重程度升序定义了 Sun ONE Application Server 中的日志级别和消息。表格左侧列中列出了 Sun ONE Application Server 中指定的日志级别,右侧列中提供了每种日志级别的简要说明。

   日志级别

日志级别

说明

FINEST
FINER
FINE

 

指定调试信息详尽程度的消息。其中 FINEST 最详尽。

 

CONFIG

 

与各种静态配置信息相关的消息,可以帮助调试可能与特定配置关联的问题。

 

INFO

 

信息类型的消息,通常与服务器配置或服务器状态相关。这些消息不会指定需要立即采取行动的错误。

例如,可能记录“已收到配置更改通知;正在消息代理上创建新主题”的消息。

 

WARNING

 

指定警告的消息。该消息可能伴随有异常情况。

 

SEVERE

 

指定相当重要的事件的消息,该事件可能会妨碍应用程序的正常执行。

 

ALERT*

 

警告用户采取特定行动的消息。

 

FATAL*

 

指定致命错误的消息,建议不要在出现致命错误后执行服务器操作。理论上,出现这条消息后就会发生服务器崩溃。

 

* 专用于 Sun ONE Application Server 的日志级别。



注意

所有日志级别低于 INFO(FINEST、FINER、FINE 和 CONFIG)的消息都可以提供信息来帮助解决有关调试的问题,所以必须按技术支持的建议将其启用。一般不会对日志级别低于 INFO 的消息进行本地化。



用于 syslog 配置的日志级别

下表包含了使用 syslog 时可以在 Sun ONE Application Server 中配置的日志级别列表。左侧列中列出了 Sun ONE Application Server 中指定的日志级别,而右侧列中提供了 syslog 设备中相应的日志级别。

   映射到 server.log 的 Sun ONE Application Server 日志级别

Sun ONE Application Server

syslog 级别

FINEST

 

LOG_DEBUG

 

FINER

 

LOG_DEBUG

 

FINE

 

LOG_DEBUG

 

CONFIG

 

LOG_INFO

 

INFO(默认)

 

LOG_INFO

 

WARNING

 

LOG_WARNING

 

SEVERE

 

LOG_ERR

 

ALERT

 

LOG_ALERT

 

FATAL

 

LOG_CRIT

 

关于虚拟服务器和日志

Sun ONE Application Server 可以拥有虚拟服务器实例。Sun ONE Application Server 实例中的每个虚拟服务器都具有自己的标识,也可以具有自己的日志文件。每个虚拟服务器的单独日志文件可以用来帮助追踪特定事务和资源的服务器活动。

要通过管理界面为虚拟服务器指定日志文件名,请转至目录树中的“HTTP Server”链接并打开虚拟服务器文件夹下的服务器实例元素,以便在右侧的框中显示“General”选项卡。可以在“Log File”字段中输入此虚拟服务器的日志文件路径和名称。“设置虚拟服务器的日志文件名”图中显示了此设置所在的位置。



注意

当启用日志并运行应用程序时,将记录应用程序的日志消息,而不记录虚拟服务器 ID。



   设置虚拟服务器的日志文件名
图中显示了设置虚拟服务器的日志文件名的位置。

也可以将来自多个虚拟服务器的日志消息定向到一个服务器日志文件。当执行此操作时,用户可能希望启用 log-virtual-server-id(位于 server.xml 文件的 log service 元素中)。这有助于区分来自不同虚拟服务器的日志消息。

<log-service level="FINEST" log-stdout="false" log-stderr="false" echo-log-messages-to-stderr="false" create-console="false" log-virtual-server-id="true" use-system-logging="false">

</log-service>

<http-listener>

<virtual-server-class>

<virtual-server id="server1" http-listeners="http-listener-1" hosts="strange" mime="mime1" state="on" accept-language="false"/>

<virtual-server id="server2" hosts="strange" mime="mime1"/>

</virtual-server-class>

</http-listener>

在此例中,<log-service log-virtual-server-id="true"> 负责将 virtual_server_id 包含在每个日志消息中。这样用户可以区分来自不同虚拟服务器的消息。如果 virtual-server 元素中不包含“log-file”属性,所有虚拟服务器上的消息都将记录到一个文件中。

关于记录器

可以在子系统级别上有选择地启用或禁用日志。各子系统的日志控制在 server.xml 文件中指定,如《Sun ONE Application Server Configuration File Reference》中所述。每个子系统都具有自己的记录器,且符合 JDK1.4 日志 API 规范的要求。

在下表中,左侧的列中定义了子系统,而右侧的列中为每个子系统定义了 server.xml 文件中的元素。

   Sun ONE Application Server 中的子系统和位置

子系统

元素

管理服务器

 

<admin-service>

 

EJB 容器

 

<ejb-container>

 

Web 容器

 

<web-container>

 

MDB 容器

 

<mdb-container>

 

Sun ONE Message Queue(JMS 服务)

 

<jms-service>

 

安全服务

 

<security-service>

 

Java 事务服务 (JTS)

 

<transaction-service>

 

对象请求代理 (ORB)

 

<iiop-service>

 

默认处理程序1

 

<log-service>

 

1

默认处理程序是指与所有 server.xml 条目相关联的默认记录器,这些条目不与特定子系统(例如公用程序类)相关联。

   JMS 服务的日志级别
图中显示了设置 JMS 服务的日志级别的位置。



注意

在 Windows 平台上,如果选择将日志发送到 Windows server.log,则只有级别为 INFOWARNINGSEVEREALERTFATAL 的消息会记录到 Windows 事件日志中。



“日志级别”表中按严重程度升序定义了为 Sun ONE Application Server 中的消息所提供的日志级别。这些日志级别符合 JDK1.4 日志 API 规范的要求。此外,日志级别 ALERT 和 FATAL 专用于 Sun ONE Application Server,而在 JDK1.4 日志 API 中不受支持。

关于客户端日志

应用程序客户机容器 (ACC) 具有自己的日志服务并只能记录到本地文件中。

ACC 通常在不同于应用程序服务器的其它主机上以自己的进程运行,因此它具有自己的日志基础结构和自己的日志文件。ACC 配置保存在 sun-acc.xml 文件中。

ACC 的客户机子系统日志元素为 log-service。下表列出了元素和属性,并标明了默认值和值的范围。

   ACC 日志元素

元素

属性

说明

log-service

 

file

 

ACC 日志文件;当为空或缺少时,记录到 stdout

 

log-service

 

level

 

ACC 日志级别。

 

Sun ONE Configuration File Reference》中提供了 sun-acc.xml 文件的一个示例。

重定向应用程序和服务器日志输出

对于开发者来说,在进行应用程序组件和 J2EE 应用程序的部件测试时,可以随时访问应用程序日志和服务器日志非常重要。在 Windows 平台上,开发者更希望看到服务器日志消息显示在桌面命令窗口中。在 UNIX 平台上,简单地将日志消息分到终端窗口(从中启动了服务器实例)中的 stderr,或在命令结尾处使用 -f 来查看写入日志文件的日志消息会令许多开发者感觉方便。

server.xml 文件中包含了可以为 stdoutstderr 设置的属性,以将日志消息定向到日志文件或终端窗口等位置。有关使用 stdoutstderr 的详细信息,请参见《Sun ONE Application Server Configuration File Reference》。

有关日志服务的信息,请参见“配置日志服务”

日志文件管理

可以将访问和事件日志 (server.log) 文件设置为自动归档。在某一时间或在指定的间隔后用户的日志将被旋转。Sun ONE Application Server 将保存旧的日志文件,并用含有保存日期和时间的名称标记所保存的文件。



注意

尽管可以创建多个虚拟服务器并为每个虚拟服务器关联一个日志文件,但是系统不支持单个虚拟服务器的日志旋转设置。



例如,可以将访问日志文件设置为每小时旋转一次,而 Sun ONE Application Server 将保存该文件并将其命名为“access.199907152400”,其中将日志文件名、年、月、日和 24 小时制时间全组合成一个字符串。根据设置的日志旋转类型不同,日志归档文件的实际格式会有所不同。



注意

这些设备主要是为非 Solaris 平台提供的。

对于 Solaris,默认情况下不会启用这些设备,必须使用本机 Solaris 操作系统日志管理设备,例如 Solaris 9 上的 logadm。在 Solaris 8 上建议使用的日志管理公用程序为“使用 Solaris cron 公用程序调度 logadm 的执行”中所述的 cron 设备。



根据操作系统的不同,有四种不同的日志旋转方法。将在以下小节中对它们进行介绍。其中包括以下主题:

对于 UNIX 和 Windows

对于 Solaris 9

对于 Solaris(任何版本)

内部守护程序日志旋转

无论是在 UNIX 还是在 Windows 操作系统中,都可以使用内部守护程序日志旋转。内部守护程序日志旋转发生在 HTTP 守护程序中并且只能在启动服务器实例时进行配置。将用以下格式保存用此方法旋转的日志:

access.<YYYY><MM><DD><HHMM>

error.<YYYY><MM><DD><HHMM>

可以指定用来旋转日志文件和开始新日志文件的基准时间。例如,如果旋转开始时间为 12:00 a.m.,并且旋转间隔为 1440 分钟(一天),那么保存时系统将立即创建一个新的日志文件而不管当前的时间,并一直收集信息,直到旋转开始。日志文件在每天的 12:00 a.m. 进行旋转,而访问日志被标记为 12:00 a.m. 并保存为 access.199907152400。同样,如果将间隔设置为 240 分钟(四小时),开始时间为 12:00 a.m.,则访问日志文件将包含从 12:00 a.m. 到 4:00 a.m.,从 4:00 a.m. 到 8:00 a.m. 依此类推时间内收集到的信息。

如果启用了日志旋转,将在服务器启动时开始进行日志文件旋转。第一个要旋转的日志文件将收集从当前时间至下次旋转时间之间的信息。以上一个例子为例,如果将开始时间设置为 12:00 a.m.,并将旋转间隔设置为 240 分钟,而当前的时间为 6:00 a.m.,则第一个要旋转的日志文件将包含从 6:00 a.m. 至 8:00 a.m 之间收集到的信息,下一个日志文件将包含 8:00 a.m. 至 12:00 p.m.(中午)的信息,并依此类推。

基于调度程序的日志旋转

调度程序日志旋转可以用于将日志文件立即归档,或使服务器在特定日期中的特定时间将日志文件归档。要将日志文件立即归档,请从管理界面左侧窗格中选择“Admin Server”。然后,单击右侧页面顶部的“Logging”链接。下一步,单击“Log Rotation”。最后,单击“Archive”。

使用调度程序方法旋转的日志将以在原文件名的后面加上文件旋转日期和时间的形式保存。例如,当在 4:30 p.m 旋转文件时,access 将变成 access.24Apr-0430PM

日志旋转在服务器启动时进行初始化。如果开启了旋转,Sun ONE Application Server 将创建一个用时间标记的访问日志文件并在服务器启动时开始进行旋转。

旋转开始以后,如果发生需要记录到访问日志文件或错误日志文件的请求或错误,Sun ONE Application Server 将创建用新时间标记的日志文件,这将在预先调度的“下次旋转时间”之后进行。



注意

对于 Windows 平台以及定向到 Solaris 中 syslog 以外的某个文件的服务器日志,您必须将服务器日志归档。



要将日志文件归档并指定 schedulerd 控制方法的用法,请从管理界面左侧窗格中选择“Admin Server”。然后,单击右侧页面顶部的“Logging”链接。下一步,单击“Scheduler based Log Rotation”框。最后,单击“OK”。将显示 scheduler 的当前状态。

使用 Solaris logadm 公用程序旋转

Solaris 9 操作系统中包含了公用程序 logadm,它可以使用记录的消息来执行一组功能。

特别是对于 Sun ONE Application Server,当从 Solaris (时钟)守护程序中运行此公用程序来执行日志旋转任务时,此公用程序非常有用,如“使用 Solaris cron 公用程序调度 logadm 的执行”中所述。

可以指定以下有关日志文件的日志旋转的详细资料:

  • 系统中必须旋转的所有日志文件名
  • 旋转间隔
  • 将触发旋转的条件
  • 要保存的备份日志文件的数目
  • 要保存的备份日志文件的命名惯例

以上详细资料在 logadm.conf 文件中指定,该文件位于:

n /etc/logadm.conf

以下是 logadm.conf 的一个样例文件:

# Copyright 2001-2002 Sun Microsystems, Inc. All rights reserved.

# Use is subject to license terms.

#

# ident "@(#)logadm.conf 1.2 02/02/13 SMI"

#

# logadm.conf

#

# Default settings for system log file management.

# The -w option to logadm(1M) is the preferred way to write to this

# file,

# but if you do edit it by hand, use "logadm -V" to check it for

# errors.

#

# The format of lines in this file is:

# <logname> <;options>

# For each logname listed here, the default options to logadm

# are given.Options given on the logadm command line override

# the defaults contained in this file.

# # logadm typically runs early every morning via an entry in

# root's crontab (see crontab(1)).

#

/var/log/syslog -C 8 -P 'Tue Jul 9 10:10:00 2002' -a 'kill -HUP `cat

/var/run/syslog.pid`' /var/adm/messages -C 4 -P 'Tue Jul 30 10:10:00 2002' -a

'kill -HUP `cat /var/run/syslog.pid`' /var/cron/log -c -s 512k -t /var/cron/olog

/var/lp/logs/lpsched -C 2 -N -t '$file.$N'

#

# The entry below is used by turnacct(1M)

#

/var/adm/pacct -C 0 -N -a '/usr/lib/acct/accton pacct' -g adm -m 664 -o adm -p never

#

# The entry below will rotate SUN One application server's default logfile

# every day provided the current logfile size is >= 512k.It will compress

# the old log file before archiving it and also delete the old files after 30

# days.The compression is done with gzip(1) and the resulting log file has

# the suffix of .gz.

/var/appserver/domains/domain1/server1/logs/server.log -A 30d -s 512k -p 1d -z

也可以用互动的方式调用 logadm 命令在特定文件中开始日志旋转。

以下示例将旋转 syslog 并保留八个日志文件。旧日志文件将放在目录 /var/oldlogs 中,而不是 /var/log 中:

% logadm -C8 -t'/var/oldlogs/syslog.$n' /var/log/syslog

还可以使用交互式命令行选项对在 /etc/logadm.conf 中指定的文件调用旋转,但是要使用不同的或已修改的选项。

如果在 /etc/logadm.conf 和命令行中都指定了选项,则首先应用在 /etc/logadm.conf 文件中指定的选项。因此,命令行选项将覆盖那些在 /etc/logadm.conf 中指定的选项。有关此操作的示例如下所示:

% logadm /var/appserver/domains/domain1/server1/logs/server.log -p now

以上命令将使用在 /etc/logadm.conf 中为给定文件提供的所有选项来旋转该文件。



注意

当同时指定多个选项时,各选项之间隐含着 AND 的关系。这意味着在旋转日志之前必须满足所有的条件。



有关 logadm 公用程序及其选项的详细信息,请参考以下手册页:

% man logadm

% logadm -h

使用 Solaris“cron”公用程序旋转

在 Solaris 8 上,cron 公用程序可以用来执行应用程序服务器的日志旋转。可以使用以下命令完成此操作:

% crontab -e

此命令将启动用户常用的编辑器(由 env. 变量 $EDITOR 定义),因此用户可以提供(时钟)守护程序条目的列表。



注意

此命令同样可以在用户一退出编辑器就调用 /etc/cron.d/logchecker 脚本。此脚本将 changed/new crontab 条目送至(时钟)守护程序。因此,(时钟)守护程序将立即拾取用此方法添加的条目,并且日志旋转也会立即开始。

用户不需要重新启动(时钟)守护程序来启用日志旋转。



本节包括以下主题:

关于 crontab 条目格式

crontab 文件由多行构成,每行包含六个字段。各字段用空格或制表位隔开。前五个字段为整数模式,分别指定以下内容:

  • 分钟 (0-59)
  • 小时 (0-23),
  • 该月的日期 (1-31),
  • 该年的月份 (1-12),
  • 星期几(0-6,其中 0=星期日)。

使用此格式,可以指定在特定的日期/星期/月份要旋转的访问文件和事件日志文件,以及重复进行旋转的时间调度。例如,

0 0 * * 1-5

/opt/SUNWappserver7/appserver/domains/domain1/server1/bin/rotatelogs

0 12 * * 1-5

/opt/SUNWappserver7/appserver/domains/domain1/server1/bin/rotatelogs

0 * * * 1-5

/opt/SUNWappserver7/appserver/domains/domain1/mainserver/bin/rotatelogs

server1 的访问文件和日志文件将在星期一至星期五的每天午夜和中午旋转;而 mainserver 的访问文件和日志文件将在星期一至星期五的每天每小时旋转一次。

crontab 文件将存储在 /var/spool/cron/crontabs/ 下。可以以最终用户或超级用户的身份创建 crontab 文件。根据用户的权限不同,可以使用以下命令查看 crontab 条目:

% crontab -l username

使用 Solaris cron 公用程序调度 logadm 的执行

cron 命令将启动进程,在指定的日期和时间执行命令。定期调度的命令可以根据 crontab 文件(位于 /var/spool/cron/crontabs 目录中)中找到的指令来指定。

作为与 cron 一起使用的定期调度的命令示例,以下 crontab 中的条目将在每天午夜启动 logadm

0 0 * * 0-6 logadm

请注意,用户可以使用 crontab(1) 命令提交自己的 crontab 文件。

要保留 cron 进行的所有操作的日志,必须在 /etc/default/cron 文件中指定 CRONLOG=YES(默认情况下)。/etc/cron.d/logchecker 是用来检查日志文件是否超出了系统 ulimit 的脚本。如果超出了该限制,日志文件将移至 /var/cron/olog

通过命令行界面配置日志

可以从命令行为服务器实例或虚拟服务器实例配置日志服务的各个方面。



注意

本节的所有命令示例都假设已经设置了环境变量。



获取服务器实例的所有 log-service 属性的步骤:

asadmin> get instance_name.log-service.*

log-service 属性还在“日志服务属性”表中进行了定义。

以下是使用指定的服务器实例名运行此命令的一个示例:

asadmin> get server1.log-service.*

将返回 server1 实例的日志服务属性列表。使用 set 命令可以配置每一个列出的属性。

要启用虚拟服务器实例的虚拟服务器 ID 的日志,请在出现终端提示后输入以下命令:

asadmin> get instance_name.LogVirtualServerId

将返回 LogVirtualServerId 的当前状态。如果状态为 False,可以使用以下 set 命令来启用它:

asadmin> set instance_name.LogVirtualServerId=true

要设置虚拟服务器实例的日志文件名,请使用以下 set 命令:

asadmin> set instance_name.virtual-server.<virtual server id>.logFile=<log file>

例如,将发出以下设置日志文件命令:

asadmin> set instance2.virtual-server.instance2.logFile=/space/IAs7se/appserver7/appserv/domai ns/domain1/instance2/logs/log

有关命令语法的详细信息,请参见命令行界面帮助。

有关使用 asadmin 的详细信息,请参见“使用命令行界面”

通过管理界面配置日志

本节介绍了通过 Sun ONE Application Server 管理界面可以执行的任务,以便为服务器范围(全局)元素、指令和应用程序组件配置可用的日志服务选项。

本节包括以下主题:

配置日志服务

日志服务是 server.xml 文件中 J2EE 服务元素类别中的一种元素,如《Sun ONE Application Server Configuration File Reference》中所述。日志服务可以用来配置系统日志服务,其中包括以下日志文件:

  • 服务器日志
  • 访问日志
  • 事务日志
  • 虚拟服务器日志

系统日志服务配置包括指定 log service 元素的属性值。

   服务实例的日志服务管理
图中显示了管理服务器的日志服务选项。

可以通过管理界面为 log service 元素配置以下属性,如“服务实例的日志服务管理”图中所示。

  • 日志文件
  • 默认日志级别
  • 将“标准输出”内容记录到事件日志
  • 将“标准错误”内容记录到事件日志
  • 反射到“标准错误”中
  • 创建控制台
  • 记录虚拟服务器 ID
  • 写入系统日志

可以从管理界面左侧窗格展开的服务器实例树状结构中访问“Log Service”链接。下表介绍了每个可以配置的属性以及默认值和允许值的范围。

   日志服务属性

属性

默认值

说明

file

 

server.log1

 

(可选)覆盖服务器日志的名称或位置。无论使用哪个用户账户运行服务器,保存服务器日志的文件和目录都必须是可写入的。

 

level

 

INFO

 

(可选)控制由其它元素记录到服务器日志中的消息的默认类型。允许的值如下所示(从高到低排列):FINESTFINERFINECONFIGINFOWARNINGSEVEREALERTFATAL

每个值都记录所有较低值的消息;例如 FINEST 记录所有消息,而 FATAL 仅记录 FATAL 消息。默认值为 INFO,它将记录所有 INFOWARNINGSEVEREALERTFATAL 消息。

 

log-stdout

 

True

 

(可选)如果为 True,请将 stdout 输出重定向到服务器日志。有效值为 OnOffYesNo10TrueFalse

 

log-stderr

 

True

 

(可选)如果为 True,请将 stderr 输出重定向到服务器日志。有效值为 OnOffYesNo10TrueFalse

 

echo-log-messages-to-stderr

 

True

 

(可选)如果为 True,除了将日志消息发送到服务器日志以外,还将它发送到 stderr。有效值为 OnOffYesNo10TrueFalse

 

create-console

 

False

 

(可选)如果为 True,请在 Windows 操作系统中为 stderr 输出创建一个控制台窗口。有效值为 OnOffYesNo10TrueFalse

 

log-virtual-server-id

 

False

 

(可选)如果为 True,虚拟服务器 ID 将显示在虚拟服务器日志中。如果有多个 virtual-server 元素共享同一个日志文件,这些属性很有用。

 

use-system-log

 

False

 

如果为 True,请使用 UNIX syslog 服务或 Windows 事件日志来生成和管理日志。

 

1

位于由 server 元素的 log-root 属性指定的目录中。

为应用程序服务器组件和子系统配置日志

本节介绍了如何启用日志以及如何为 Sun ONE Application Server 组件及子系统选择日志级别。请注意,Java 事务服务组件包含多个日志文件。因为大多数组件和子系统的处理方法和配置日志级别的有关方法相同,所以对于组件和子系统的特定编组,选择日志级别的操作仅记录一次。

以下组件和子系统可以选择性记录服务器消息。通过参考本指南中介绍的其它主题,用户可以逐渐熟悉这些组件和子系统。

  • ORB - 为基于 Corba 的客户机配置支持
  • Web 容器 - 配置 J2EE 服务
  • EJB 容器 - 配置 J2EE 服务
  • MDB 容器 - 配置 J2EE 服务(在 EJB 容器内)
  • Java 事务服务 - 配置 J2EE 服务
  • JMS 服务 - Java 信息服务
  • 虚拟服务器 - 使用虚拟服务器

指定日志级别的步骤

要为 ORB、Web 容器、EJB 容器、MDB 容器(在 EJB 容器内)、Java 事务服务和 JMS 服务指定日志级别,请执行以下步骤:

  1. 在管理界面的左侧窗格中,展开 Sun ONE Application Server 实例,将显示要编辑的组件和子系统。
  2. 单击所需组件或子系统的链接。
  3. 在管理界面的右侧页面中,从“Log Level”下拉列表中选择以下日志级别参数之一。这些日志级别在“关于日志级别”中进行介绍。

指定日志文件的步骤:(虚拟服务器)

要指定日志文件,请执行以下步骤:

  1. 在管理界面的左侧窗格中,展开 Sun ONE Application Server 实例,将显示 HTTP 服务器子系统。
  2. 单击“HTTP Server”链接。
  3. 单击“Virtual Server”链接。
  4. 再单击所需的服务器实例链接。
  5. 在管理界面的右侧页面中,在“General”选项卡下的“Log File”字段中输入所需的目录路径和文件名。

指定事务日志位置的步骤:(Java 事务服务)

要指定事务日志的位置,请执行以下步骤:

  1. 在管理界面的左侧窗格中,展开 Sun ONE Application Server 实例,将显示事务服务子系统。
  2. 单击“Transaction Service”链接。
  3. 在管理界面的右侧页面中,在“Advanced”字段组下的“Transaction Log Location”字段中输入所需的目录路径和文件名。

为错误日志配置指令

Sun ONE Application Server 中包含 init.conf 文件的错误日志指令。其中包括以下指令:

  • 错误日志日期格式。ErrorLogDateFormat 指令指定了服务器日志使用的日期格式。
  • 日志刷新间隔LogFlushInterval 确定了最大的刷新时间间隔(以秒为单位),在此之前访问日志会从内存刷新到 access.log 文件中。
  • 进程 ID 日志。 PidLog 指定了用来记录基本服务器进程的进程 ID (pid) 文件。有些服务器支持程序假设此日志位于 logs/pid 服务器根目录中。

所有 init.conf 的指令都在《Sun ONE Application Server Configuration File Reference》中进行了详细的介绍。

查看访问日志文件

既可以查看管理员服务器的 http 日志文件,也可以查看 Sun ONE Application Server 实例的 http 日志文件。

要查看管理员服务器的 http 日志,请先从管理界面的左侧窗格中选择“Admin Server”,再从右侧页面中选择“Logging”选项卡。将显示“View HTTP Access Log”链接。选择此链接以查看已配置的访问日志。“管理服务器的查看 HTTP 访问日志”图中列出了所显示日志的示例。

   管理服务器的查看 HTTP 访问日志
图中显示了管理服务器的查看 HTTP 日志。

要查看应用程序服务器实例的访问日志,请在管理界面的左侧窗格中单击所需的服务器实例。在右侧窗格中单击“Logging”选项卡。单击“View Access Log”链接,将显示该服务器实例已配置的活动访问日志。“应用程序服务器实例的查看访问日志”图中显示了一个示例。

   应用程序服务器实例的查看访问日志
图中显示了应用程序服务器实例的查看访问日志。

查看事件日志文件

既可以查看管理员服务器的活动事件日志文件,也可以查看 Sun ONE Application Server 实例的活动事件日志文件。

要查看管理员服务器的事件日志,请从左侧窗格中选择“Admin Server”,再从右侧页面中选择“Logging”选项卡。将显示“View Event Log”链接。选择此链接以查看已配置的事件日志。“管理服务器的查看事件日志”图中列出了所显示日志的示例。

   管理服务器的查看事件日志
图中显示了管理服务器的查看事件日志。

要查看应用程序服务器实例的事件日志,请先在管理界面的左侧窗格中单击所需的服务器实例,再从右侧窗格中选择“Logging”选项卡。将显示“View Event Log”链接。选择此链接以查看已配置的事件日志。“应用程序服务器实例的查看事件日志”图中列出了所显示日志的示例。

   应用程序服务器实例的查看事件日志
图中显示了应用程序服务器实例的查看事件日志。

设置日志首选项

在安装过程中,将为服务器创建名为 access 的访问日志文件。通过指定是否记录访问、日志使用什么格式,以及当客户机访问资源时服务器是否要查找客户机的域名,用户可以自定义任意资源的访问日志。

要对多个虚拟服务器使用一个日志文件,请在 server.xml 文件中为事件日志打开 LogVsId。详细信息,请参见《Sun ONE Application Server Configuration File Reference》。也可以在管理界面的“Admin Server Logging”选项卡上打开 LogVsID

请按以下步骤从管理界面中启用记录虚拟服务器 ID。重新启动管理服务器后更改才能生效。

  1. 请在管理界面的左侧窗格中单击“Admin Server”。
  2. 在右侧页面中单击“Logging”选项卡。
  3. 单击“Log virtual server ID”复选框。
  4. 单击“Save”按钮以应用对 Sun ONE Application Server 所做的更改。

要使更改生效,需要重新启动 Sun ONE Application Server。

运行日志分析程序

flexanlg 是用来进行日志文件报告的日志分析程序工具。仅在将日志定向到 syslog 以外的文件时,才可以使用日志分析程序。

使用日志分析程序可以生成有关默认服务器的统计数据,例如活动摘要、最常访问的 URL、一天中访问服务器的高峰时段等等。除了可以生成默认服务器的统计数据以外,日志分析程序不能生成任何虚拟服务器的统计数据。但是,可以查看每个虚拟服务器的统计数据,如“查看访问日志文件”中所述。



注意

在运行日志分析程序之前,必须旋转服务器日志。详细信息,请参见“日志文件管理”



通过使用 flexanlg 工具可以从命令行运行日志分析程序命令,该工具位于 install_dir/bin/flexanlg 目录中。

要运行 flexanlg,请在出现命令提示后键入以下命令和选项:

flexanlg [ -P ] [-n name] [-x] [-r] [-p order] [-i file]* [ -m metafile ]* [ o file][ c opts] [-t opts] [-l opts] [-h help]

命令选项(可以重复标有 * 的选项)。

-i filename

输入日志文件

-P

代理日志格式

-n servername

服务器的名称

-x

以 HTML 形式输出

-r

解析主机名的 IP 地址

-p [ c, t, l ]

输出顺序;默认的顺序为计数、时间统计和列表

-m filename

元文件

-o filename

输出日志文件;默认为 stdout

-c [ h, n, r, f, e, u, o, k, c, z ]

对这些项目进行计数;默认为:h、n、r、e、u、o、k、c

h:找到的总数

n:304 未修改的状态代码(使用本地副本)

r:302 找到的状态代码(重定向)

f:404 未找到的状态代码(未找到文档)

e:500 服务器错误状态代码(配置错误)

u:唯一 URL 的总数

o:唯一主机的总数

k:传送的千字节总数

c:高速缓存中保存的千字节总数

z:不对任何项目进行计数

-t [ sx, mx, hx, xx, z ]

查找常规统计数据;默认为:s5m5h24x10

s(数目):查找日志的最大(数目)秒钟数

m(数目):查找日志的最大(数目)分钟数

h(数目):查找日志的最大(数目)小时数

u(数目):查找日志的最大(数目)用户数

a(数目):查找日志的最大(数目)用户代理数

r(数目):查找日志的最大(数目)参考数

x(数目):查找最大(数目)的杂项关键字

z:不查找任何常规统计数据

-l [ cx, hx ]

创建指定子选项的列表;默认为:c+3h5

c (x, +x):最常访问的 URL

x:仅列出 x 项

+x:仅当访问超出 x 次时列出

h (x, +x): 最常访问用户服务器的主机或 IP 地址

x:仅列出 x 项

+x:仅当访问超出 x 次时列出

z:不创建任何列表

EXAMPLE:使用 flexanlg 命令

flexanlg -i /var/opt/SUNQappserver7/domains/domain1/server1/logs/access


注意

在运行日志分析程序之前,应将服务器日志归档。



查看事件 (Windows 2000 Pro)

除了将错误记录到 server.log 文件以外,Sun ONE Application Server 还将严重的系统错误记录到事件查看器中。事件查看器可用于监视系统中发生的事件。在打开错误日志之前,可以使用事件查看器查看因基础配置问题而出现的错误。

要使用事件查看器,请执行以下步骤:

  1. 从“开始”菜单中,依次选择“程序”和“管理工具”。在“管理工具”程序组中选择“事件查看器”。
  2. 从“日志”菜单中选择“应用程序”。
  3. 应用程序日志将显示在事件查看器中。来自 Sun ONE Application Server 的错误具有 https-serverid 的源标签。

  4. 从“查看”菜单中选择“查找”以在日志中搜索这类标签之一。从“查看”菜单中选择“刷新”以查看更新后的日志项。

有关事件查看器的详细信息,请参见相关系统文档。


上一个      目录      索引      下一个     
Copyright 2003 Sun Microsystems, Inc. All rights reserved.