日志管理器域出口 XLGSTRM

在日志管理器域中有一个出口点:XLGSTRM。 您可以使用 XLGSTRM 来修改对 z/OS® 的请求,以创建新的日志流。 您可以先更改模型日志流名称和其他参数,然后再将它们传递到 z/OS 系统记录器

如果从 CICS® 到 z/OS System Logger 的日志流连接请求失败,因为未向 z/OS定义日志流,那么 CICS 会向 z/OS System Logger 发出请求,以使用模型日志流定义动态创建日志流。

CICS 传递到 z/OS 的模型日志流名称取决于日志名称是指系统日志还是 CICS 常规日志,如下所示:
CICS 系统日志
&sysname.LSN_last_qualifier。模型

&sysname 是解析为 z/OS 映像的系统名称的 z/OS 符号。 LSN_last_qualifier 是 JOURNALMODEL 资源定义中指定的日志流名称的最后一个限定符。

如果没有为 DFHLOG 和 DFHSHUNT 提供 JOURNALMODEL 资源定义,或者如果使用组 DFHLGMOD 中提供的 CICS 定义,那么模型日志流名称缺省为 &sysname.DFHLOG.MODEL 和 &sysname。DFHSHUNT.MODEL。

例如,如果 CICS 区域发出为其主系统日志创建日志流的请求,并且 CICS 正在具有 MV10 的 sysid 的 z/OS 映像中运行,并且使用缺省 JOURNALMODEL 定义,那么 z/OS System Logger 期望找到名为 MV10.DFHLOG.MODEL。

如果 z/OS 映像的系统名称以数字字符开头且长度少于 8 个字符, CICS 会以 C 作为前缀,这样模型日志流名称就变成了 C®&sysname.LSN_last_qualifier。 这是因为 z/OS System Logger 拒绝以数字开头的日志流名称。 如果 z/OS 映像的系统名称以数字开头,但长度已为 8 个字符 (最大值) ,那么 CICS 不会添加 C 前缀,这意味着 z/OS System Logger 将拒绝缺省模型日志流名称。 但是,全局用户出口程序可以更改模型日志流名称。

CICS 常规日志
LSN_qualifier_1.LSN_qualifier2.MODEL. 这两个限定符的缺省值是 CICS 区域用户标识和 CICS 区域 APPLID ,但它们可以是 JOURNALMODEL 资源定义中指定的用户定义值。

例如,如果 CICS 区域用户标识为 CICSHT## 且 APPLID 为 CICSHTA1,那么缺省模型名称为 CICSHT##.CICSHTA1.MODEL。

以下信息将传递到 XLGSTRM 全局用户出口程序:
  • 要定义的日志流的名称
  • 缺省模型日志流名称
  • 系统日志标志
  • z/OS System Logger IXGINVNT 参数列表。
出口程序可以通过更新 UEPMLSN 出口特定参数所指向的字段来修改模型流名称。 以下是出口程序如何更改模型流名称的示例:
          L     R3,UEPMLSN          R3 = address of stream name
          MVC   0(26,R3),=CL26'NEW.MODEL.NAME'
通过更新 UEPIXG 参数指向的字段,出口程序可以修改 z/OS System Logger 用于定义日志流的 IXGINVNT 宏参数列表。 使用宏的 IXGINVNT MF=M 格式,这允许出口指定要使用的日志流属性。 以下是出口程序如何更改结构名称的示例:
          L     R9,UEPIXG
          IXGINVNT REQUEST=DEFINE,
                TYPE=LOGSTREAM,
                STRUCTNAME=NEW_STRUCTURE,
                MF=(M,(R9),NOCHECK)
     ...
 NEW_STRUCTURE DC CL16'LOG_SYSTEST_009'

您不需要对 IXGINVNT 宏的列表和执行格式进行编码,或者在出口中包含 IXGCON 或 IXGANSAA 宏-这些宏由发出 DEFINE 请求的 CICS 代码提供。

有关 IXGINVNT 服务的信息,请参阅 z/OS MVS Programming: Assembler Services Guide

XLGSTRM 全局用户出口程序可以设置日志流定义的显式属性,还可以设置导致绕过日志流定义的返回码。

注: 如果希望 XLGSTRM 拦截 CICS 系统日志的连接,那么必须在第一阶段 PLT 程序中启用出口程序。

如何使用 XLGSTRM 出口的示例

假设有 200 个 CICS 区域正在 20 个 z/OS 映像上运行; 为了避免必须显式定义每个 CICS 区域所使用的每个日志流,您决定使用模型定义。 将在首次使用时向 z/OS 动态定义日志流,并使用 XLGSTRM 出口程序从备用模型日志流中进行选择。 这就是它的工作方式:
  1. 在 CICS 区域的初始启动时, INITPARM 系统初始化参数指定:
    INITPARM=(Exit_enabler_pgmname=nnn)
    其中:
    • Exit_enabler_pgmname 是启用 XLGSTRM 用户出口程序的程序的名称。
    • nnn 是一个数字,用于标识共享同一组日志流模型的一组 CICS 区域。
  2. 启用 XLGSTRM 用户出口程序的程序发出 EXEC CICS ASSIGN INITPARM 命令以检索值 nnn,并将其放在出口程序的全局工作区中。
  3. 当区域尝试连接到其系统日志时,由于未定义日志流,将调用 XLGSTRM 出口程序。 出口程序选择模型 CICS.DFHLOG.MODELnnn

XLGSTRM 的样本全局用户出口程序

DFH$LGLS 是用于 XLGSTRM 出口点的样本全局用户出口程序。 它说明如何访问和更改传递到 XLGSTRM 出口程序的一些参数。 有关更多信息,请参阅 日志管理器域样本出口程序 :DFH$LGLS