LoginSignup
3
2

概要

■テーブル関数名:QSYS2.HISTORY_LOG_INFO
■カテゴリ:メッセージ処理サービス
■サポート:IBM i 7.2以降
■参照URL(IBM i 7.5):https://www.ibm.com/docs/ja/i/7.5?topic=services-history-log-info-table-function

IBM i OSやH/W,ファームウェアなどの重要なメッセージの出力先であるQHSTヒストリーログを検索するSQLサービスです。
従来の5250端末ではDSPLOG QHST コマンドでQHSTヒストリーログを検索できますが、現代的なインターフェースとは呼べないかもしれません。(機能的な支障はまったくありませんが)
・・・操作感に多少慣れが必要な方が最近の技術者にはハードルがあるかもしれませんね。

image.png

QSYS2.HISTORY_LOG_INFO 実行例

ACS 例から挿入 で生成されるサンプル がこちらです。

--  category:  IBM i Services
--  description:  History Log - Study job longevity 

   WITH JOB_START(start_time, from_user, sbs, from_job) AS (
     SELECT message_timestamp as time, 
          from_user, 
          substr(message_tokens, 59, 10) as subsystem,
          from_job
     FROM TABLE(qsys2.history_log_info(START_TIME => CURRENT DATE,
                                       END_TIME   => CURRENT TIMESTAMP)) x           
     WHERE message_id = 'CPF1124'
     ORDER BY ORDINAL_POSITION DESC
   ) SELECT TIMESTAMPDIFF(4, CAST(b.message_timestamp - a.start_time AS CHAR(22)))
              AS execution_minutes, DAYNAME(b.message_timestamp) AS JOB_END_DAY, 
            a.from_user, a.from_job, a.sbs
     FROM JOB_START A  INNER JOIN
          TABLE(qsys2.history_log_info(START_TIME => CURRENT DATE,
                                       END_TIME   => CURRENT TIMESTAMP)) b
          ON b.from_job = a.from_job 
     WHERE b.message_id = 'CPF1164'
     ORDER BY execution_minutes desc limit 20;

何やら長いですが、QHSTからCPF1124を出力したジョブをジョブ実行時間の長い順に20個まで出力する、というもののようです。
CPF1124のメッセージをDSPMSGDコマンドで確認すると、下記のようにでました。
image.png

ジョブが開始された時刻を識別できるメッセージのようです。

実行してみますと下記の結果になりました。

image.png

実行曜日が 土曜日 日本語表示でみやすいですね。

シンプルな実行例

SELECT * FROM TABLE(QSYS2.HISTORY_LOG_INFO()) 

image.png

QHSTのログを全部新しい方から並べて見えるようです。必要なカラムだけに絞り込む、ユーザーを絞り込む等すれば見やすいかもしれません。

シンプルな実行例にカラム選択を追加

メッセージID, 時刻、ジョブ名、メッセージテキストを表示

SELECT MESSAGE_ID, MESSAGE_TIMESTAMP, FROM_JOB, MESSAGE_TEXT FROM TABLE(QSYS2.HISTORY_LOG_INFO()) ; 

このへんがミニマムでしょうか・・メッセージIDをセレクトするといい感じかもしれません。
image.png

過去24時間に、あるユーザーが出力したヒストリー・ログを検索する

サンプルはコチラです。ユーザー名の GOMA は任意のユーザープロフィールに置き換えてください。

SELECT * FROM TABLE(QSYS2.HISTORY_LOG_INFO(CURRENT TIMESTAMP - 1 DAY))  WHERE FROM_USER= ('GOMA') ; 

実行結果例です。さらにメッセージタイプやメッセージID, 重大度SEVERITYでフィルターすると使えそうです。

image.png

重大度20以上でフィルターする

SELECT * FROM TABLE(QSYS2.HISTORY_LOG_INFO(CURRENT TIMESTAMP - 1 DAY))  WHERE FROM_USER= ('GOMA') and SEVERITY>='20' ; 

結果は・・
image.png

なかなか、いいのではないでしょうか。

3
2
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2