Sun Java System Instant Messaging 7.2 管理指南

第 13 章 管理 Instant Messaging 的日志记录

Instant Messaging 会创建日志文件,用于记录事件、各种软件组件的相关状态、系统错误以及服务器、多路复用器、“日历”代理、监视程序和 Instant Messenger 的其他方面。通过查看日志文件,可以从多个方面对服务器操作进行监视。本节在以下主题中对日志记录进行了说明:

有关 XMPP/HTTP 网关日志记录的信息,参见管理 XMPP/HTTP 网关的日志记录。此外,您可以根据需要收集 Instant Messenger 的日志记录数据。有关更多信息,参见管理 Instant Messenger 的日志记录

Instant Messaging 日志记录概述

Instant Messaging 提供两种方式生成日志文件:使用 log4j,或不使用 log4j 而通过指定 iim.conf 中的参数。Log4j 样式的日志记录可用于所有服务器实例,包括重定向服务器、“日历”代理、监视程序和 XMPP/HTTP 网关,但不能用于多路复用器。

有关 XMPP/HTTP 网关日志记录的信息,参见管理 XMPP/HTTP 网关的日志记录。有关设置 Instant Messenger 日志记录的信息,参见管理 Instant Messenger 的日志记录


注 –

在将来的版本中,基于 iim.conf 参数的日志记录机制可能会过时。尽可能使用 log4j。


您可以配置 Instant Messaging 服务器、多路复用器、“日历”代理、监视程序和 XMPP/HTTP 网关日志记录的级别。此外,使用 log4j,您可以配置 Instant Messaging 仅为 XMPP 流量生成一个单独的日志文件。

如果您没有使用 log4j 样式的日志记录,则作为定期系统维护的一部分,您需要定期查看和修剪日志文件以免占用过多磁盘空间。服务器不执行此操作。

关于 log4j 的更多信息,参见Apache 日志记录服务网站

Instant Messaging 日志文件位置

当您安装完 Instant Messaging 后运行 configure 实用程序时,可指定日志文件的位置。通常,日志文件存储于 im-runtime-base/log。有关查找 im-runtime-base 的信息,参见Instant Messaging 服务器目录结构

如果您在部署中使用 log4j 生成日志文件,则记录程序也会使用在配置过程中指定的目录作为存储 log4j 日志的基目录。

Instant Messaging 组件日志记录级别

维护错误日志文件的级别或优先级定义了日志文件的详细(冗长)程度。优先级较高表示详细信息较少,因为在日志文件中将只记录高优先级(高严重性)事件。相反,较低的优先级意味着会有较多详细信息,因为在日志文件中将记录较多事件。

不论您使用的是 log4j 还是基于参数的日志记录,均可单独设置每个组件的日志记录级别。

表 13–1 说明组件的日志记录级别。这些日志记录级别是 UNIX syslog 工具所定义级别的一个子集。

表 13–1 Instant Messaging 组件的日志记录级别

级别 

说明 

FATAL

此优先级会在日志文件中记录最少的日志记录详细信息。只要发生严重问题或危急状况,就会向日志文件中添加一条日志记录。如果出现 FATAL 问题,则应用程序可能会停止运行。 

ERROR

只要发生可恢复的软件错误情形或检测到网络故障,就会向日志文件添加一条日志记录。例如,服务器未能与客户机或另一服务器连接。 

WARNING

只要检测到用户错误,就会向日志文件添加一条日志记录。例如,服务器无法解释客户机发送的通信内容。 

INFO

只要进行重要操作,就会向日志文件添加一条日志记录。例如,最终用户成功登录或注销。 

DEBUG

在日志文件中记录任务。此信息仅可用于调试目的。在每个过程或任务中,各步骤的每个事件都被写入日志文件,以帮助最终用户在调试应用程序时确定发生的问题。 

当您选择了特定的日志记录级别后,将记录与该级别相对应的事件,以及所有优先级更高、详细度更低的级别的事件。

INFO 是服务器的默认级别。ERROR 是多路复用器、“日历”代理和监视程序日志文件的默认级别。


注 –

如果您不使用 log4j,并且指定 DEBUG 作为日志记录级别,则日志文件将会占用更多磁盘空间。应监视并整理日志文件,以防止其占用过多磁盘空间。


使用 Log4j 管理 Instant Messaging 日志记录

当您安装 Instant Messaging 时,log4j 配置文件的模板文件 (log4j.conf.template) 会安装到 im-svr-base/lib 目录中。当安装后运行 configure 实用程序时,该模板用于在 im-cfg-base 目录中创建 log4j 配置文件 (log4j.conf)。此配置文件用于确定存储 log4j 生成的日志文件的位置、用于各种组件的日志记录级别、输出语法以及确定生成什么日志文件。

本节中的以下各部分说明使用 log4j 记录程序生成 Instant Messaging 的日志文件:

log4j 记录程序使用 Instant Messaging 组件日志记录级别中所述日志记录级别。

有关 log4j 的更多信息以及有关日志文件配置方面的说明(例如大小、备份数等),参见Apache 日志记录服务网站

Instant Messaging Log4j 配置文件 (log4j.conf) 位置

您可以更改 log4j 配置文件 (log4j.conf ) 的位置,方法是修改 iim.conf 中的 iim.log4j.config 参数。如果您没有指定此参数的值,记录程序将在 im-cfg-base 中查找。如果记录程序在该目录中没有找到 log4j 配置文件,它会使用 iim.conf 中的日志记录参数来生成非 log4j 样式的日志。

有关查找 im-cfg-base 的信息,参见Instant Messaging 服务器目录结构

Instant Messaging Log4j 日志文件语法

配置实用程序基于 log4j 配置文件模板 (log4j.conf.template) 的内容生成 log4j 配置文件 (log4j.conf)。示例 13–1 所示为 log4j 模板。 在此模板中:


示例 13–1 Log4j 模板文件


log4j.logger.xmppd=INFO, A1
# DEFAULT TO RollingFileAppender
log4j.appender.A1=org.apache.log4j.RollingFileAppender
log4j.appender.A1.file=${logdir}/xmppd.log
log4j.appender.A1.append=true
log4j.appender.A1.maxBackupIndex=7
log4j.appender.A1.maxFileSize=5mb
# More example appenders..
# Straight to console..
# log4j.appender.A1=org.apache.log4j.ConsoleAppender
# log4j.appender.A1.ImmediateFlush=true
# Rollover at midnight..
# log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
# log4j.appender.A1.DatePattern='.'yyyy-MM-dd
# log4j.appender.A1.file=${logdir}/xmppd.log
# log4j.appender.A1.ImmediateFlush=true
# log4j.appender.A1.append=true
# Send to SMTP..
# log4j.appender.A1=org.apache.log4j.SMTPAppender

# PATTERN LAYOUT AND OPTIONS
# DEFAULT TO PatternLayout
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
# For full dates..
log4j.appender.A1.layout.ConversionPattern=[%d{DATE}] %-5p %c [%t] %m%n
# IM traditional output format..
#log4j.appender.A1.layout.ConversionPattern=%d{HH:mm:ss,SSS} %-5p %c [%t] %m%n
# More example layouts
# XMLLayout for chainsaw consumption
# log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout
# TTCCLayout for NDC information

# log4j.appender.A1.layout=org.apache.log4j.xml.TTCCLayout
# log4j.appender.A1.layout.DateFormat=ISO8601
# log4j.appender.A1.layout.TimeZoneID=GMT-8:00
# log4j.appender.A1.layout.CategoryPrefixing=false
# log4j.appender.A1.layout.ThreadPrinting=false
# log4j.appender.A1.layout.ContextPrinting=false

# Now we list logger/appender/layout for the other default loggers, but
# only the defaults..
log4j.logger.iim_wd=ERROR, A2
log4j.appender.A2=org.apache.log4j.RollingFileAppender
log4j.appender.A2.file=${logdir}/iim_wd.log
log4j.appender.A2.append=true
log4j.appender.A2.maxBackupIndex=7
log4j.appender.A2.maxFileSize=5mb
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=[%d{DATE}] %-5p %c [%t] %m%n

# For separate xmpp traffic log, disabled by default.
log4j.logger.xmppd.xfer=DEBUG, A3
log4j.appender.A3=org.apache.log4j.varia.NullAppender
# Select next block instead of previous line to enable separate transfer log
# log4j.appender.A3=org.apache.log4j.RollingFileAppender
# log4j.appender.A3.file=${logdir}/xfer.log
# log4j.appender.A3.append=true
# log4j.appender.A3.maxBackupIndex=7
# log4j.appender.A3.maxFileSize=5mb
# log4j.appender.A3.layout=org.apache.log4j.PatternLayout
# # Note, simpler default output than above 3 loggers:
# log4j.appender.A3.layout.ConversionPattern=[%d{DATE}] %-5p %c [%t] %m%n

log4j.logger.agent-calendar=ERROR, A4
log4j.appender.A4=org.apache.log4j.RollingFileAppender
log4j.appender.A4.file=${logdir}/agent-calendar.log
log4j.appender.A4.append=true
log4j.appender.A4.maxBackupIndex=7
log4j.appender.A4.maxFileSize=5mb
log4j.appender.A4.layout=org.apache.log4j.PatternLayout
log4j.appender.A4.layout.ConversionPattern=[%d{DATE}] %-5p %c [%t] %m%n

log4j.logger.net.outer_planes.jso.BasicStream=OFF, A5
log4j.appender.A5=org.apache.log4j.RollingFileAppender
log4j.appender.A5.file=${logdir}/jso.log
log4j.appender.A5.append=true
log4j.appender.A5.maxBackupIndex=7
log4j.appender.A5.maxFileSize=5mb
log4j.appender.A5.layout=org.apache.log4j.PatternLayout
log4j.appender.A5.layout.ConversionPattern=[%d{DATE}] %-5p %c [%t] %m%n

log4j.logger.genredirect=INFO, A6
log4j.appender.A6=org.apache.log4j.RollingFileAppender
log4j.appender.A6.file=${logdir}/genredirect.log
log4j.appender.A6.append=true
log4j.appender.A6.maxBackupIndex=7
log4j.appender.A6.maxFileSize=5mb
log4j.appender.A6.layout=org.apache.log4j.PatternLayout
log4j.appender.A6.layout.ConversionPattern=[%d{DATE}] %-5p %c [%t] %m%n

Instant Messaging 组件的 Log4j 日志级别

log4j 记录程序使用与 Instant Messaging 组件日志记录级别中所述的基于 iim.conf 参数的日志记录机制相同的日志记录级别。

Procedure指定 Log4j 配置文件 (Log4j.conf) 的位置

  1. 打开 iim.conf

    有关查找此文件的信息,参见iim.conf 文件位置

  2. iim.log4j.config 参数设置为您想要记录程序在其中查找 log4j.conf 的路径。

    例如,在 Solaris 中:


    iim.log4j.config=/etc/opt/SUNWiim/default/config/log4j.conf
    

    在 Linux 中:


    iim.log4j.config=/etc/opt/sun/im/default/config/log4j.conf
    
  3. 保存并关闭 iim.conf

  4. 刷新服务器。


    imadmin refresh
    

Procedure启用或禁用 Instant Messaging 组件的 Log4j 日志记录

默认情况下,log4j 日志记录用于所有要生成日志记录信息的组件。

  1. 要禁用 log4j 日志记录,可在 log4j.conflog4j.conf.template 中将该组件的日志记录级别设为 OFF

    有关更多信息,参见设置 Instant Messaging 的 Log4j 日志级别

  2. 要启用 log4j 日志记录,可在 log4j.conflog4j.conf.template 中将该组件的日志记录级别设为 OFF 以外的任何日志记录级别。

Procedure设置 Instant Messaging 的 Log4j 日志级别

您可以通过修改模板或日志配置文件来设置日志级别。不过,如果您只修改配置文件,下次运行 configure 时将覆盖所有修改。要避免如此,您应同时修改配置文件和模板。

  1. 打开 log4j.conf.template

    默认情况下,此文件存储在以下位置:


    im-svr-base/lib
  2. 对每个组件,指定您想要使用的日志记录级别。

    例如,设置服务器的日志级别:


    log4j.logger.xmppd=log-level
    

    其中,log-levelFATALERRORWARNINGINFODEBUG 之一。

    有关这些日志记录级别的详细信息,参见表 13–1

  3. 保存并关闭 log4j.conf.template

  4. 对配置文件 log4j.conf 重复该过程。

Procedure指定 Instant Messaging 组件的最大 Log4j 日志文件大小

您可以通过修改模板或日志配置文件来设置日志级别。不过,如果您只修改配置文件,下次运行 configure 时将覆盖所有修改。要避免如此,您应同时修改配置文件和模板。

  1. 打开 log4j.conf.template

    默认情况下,此文件存储在以下位置:


    im-svr-base/lib
  2. 对每个组件,指定组件日志文件的最大大小。

    例如,设置服务器日志文件的大小:


    log4j.appender.A1.maxFileSize=max-logfile-size
    

    其中,A1 是服务器的默认 appender ID,max-logfile-size 以 MB 为单位,例如 5MB

  3. 对配置文件 log4j.conf 重复该过程。

使用 iim.conf 参数配置 Instant Messaging 组件的日志记录

如果您没有使用 log4j 来生成日志文件,您需要对想要 Instant Messaging 生成日志记录信息的每个组件设置特定的配置参数。此方法称为基于参数的 Instant Messaging 日志记录。您可以为所有服务器实例(包括重定向服务器、多路复用器、日历代理和监视程序)使用基于参数的日志记录。


注 –

在将来的版本中,这一基于 iim.conf 参数的日志记录机制可能会过时。尽可能使用 log4j。


表 13–2 提供日志文件的名称以及 iim.conf 中用于设置每个 Instant Messaging 组件日志文件的日志记录级别的配置参数。

表 13–2 Instant Messaging 组件的日志文件名称和日志记录级别配置参数

组件 

日志文件名称 

日志记录级别配置参数 

服务器 

xmppd.log

iim.log.iim_server.severity

多路复用器 

mux.log

iim.log.iim_mux.severity

日历代理 

agent-calendar.log

iim.log.agent-calendar.severity

监视程序 

iim_wd.log

iim.log.iim_wd.severity

这些配置参数可以具有以下值:

有关记录每个日志记录级别的详细信息,参见Instant Messaging 组件日志记录级别

此外,Sun JavaTM System Access Manager 部署中的日志记录配置由 com.iplanet.services.debug.level 属性确定。您可以在 Sun Java System Access Manager 主机上的 AMConfig.properties 文件中设置此属性。默认情况下,此文件安装在以下位置:

AM-svr-base/lib/AMConfig.properties

其中,AM-svr-baseAccess Manager 的安装目录。

此属性可能包含下列值:

默认情况下,Sun Java System Portal Server 桌面日志文件 (desktop.debug ) 和归档日志文件 (IMArchiveSearch.logIMArchiveSubmit.log) 存储于以下位置:

Procedure使用 iim.conf 参数设置 Instant Messaging 组件的日志级别

    修改 iim.conf 中的日志记录参数。

    有关日志文件和您要为每个组件设置的相关参数的列表,参见表 13–2

    有关查找和修改 iim.conf 的说明,参见iim.conf 文件语法。有关监视程序的更多信息,参见管理监视程序进程。有关“日历”代理的更多信息,参见第 16 章,使用日历弹出提示

管理 Instant Messenger 的日志记录

默认情况下,不记录 Instant Messenger 数据。在支持呼叫中可能会要求收集客户机数据。在此情况下,需要先启用日志记录,才能查看客户机日志数据。

根据需要创建 Instant Messenger 日志,并存储在用户主目录中 (usr_home/.sunmsgr/messenger.log )。

设置 Instant Messenger 的日志记录

要设置 Instant Messenger 的日志记录,您需要:

  1. 确定您要收集的数据类型。

  2. 修改 im.jnlp 以包括 logconfig 参数。

  3. 根据您要收集的数据类型指定 logconfig 参数的类型。

  4. 重新部署资源文件。

Procedure启用 Instant Messenger 的日志记录

  1. 制作 im.jnlp 的备份。

  2. 在文本编辑器中打开 im.jnlp Instant Messenger 资源文件。

  3. 搜索下面的行:


    <application-desc main-class="com.iplanet.im.client.iIM">
  4. 将下列参数添加到该部分末尾:


    <argument>logconfig=type</argument>
    

    其中,typeALLAPIXMPPTRAFFICCLIENT 之一。有关详细信息,参见Instant Messenger 日志文件内容选项

  5. 保存并关闭 im.jnlp 文件。

  6. 如果您使用的是 Sun Java System Application Server 或 Sun Java System Web Server,则需要如重新部署资源文件中所述重新部署资源文件。

  7. 重新启动 Instant Messenger。

  8. 查找日志文件。

    默认情况下,日志文件存储为 usr_home/.sunmsgr/messenger.log

接下来的操作

当 Instant Messenger 故障排除完成后,您应该将 im.jnlp 的备份副本复制回来。然后,如重新部署资源文件中所述重新部署资源文件。

查找 Instant Messenger 日志文件 (messenger.log )

默认情况下,Instant Messenger 日志文件存储为 messenger.log,位于以下用户主目录下:


/usr_home/.sunmsgr/messenger.log

Instant Messenger 日志文件内容选项

您可以通过指定 im.jnlplogconfig 参数的值来确定想要在 messenger.log 中记录哪些活动。表 13–3 说明 logconfig 的配置参数。有关设置 logconfig 参数和生成 Instant Messenger 日志的说明,参见启用 Instant Messenger 的日志记录

表 13–3 messenger.log 的 Instant Messenger 日志记录选项

logconfig

messenger.log 包含...

ALL

有关 API 的信息、客户机和服务器之间的所有流量以及 Instant Messenger 客户机应用程序本身的调试信息。 

API

仅 API 信息。 

XMPPTRAFFIC

仅客户机到服务器的通信。 

CLIENT

仅客户机应用程序 (Instant Messenger) 详细信息。