Service SQL IBM i (AS/400) · Fonction table
QSYS2.HISTORY_LOG_INFO
Lecture du journal historique QHST
Lit les messages du journal historique du système (QHST) sur une période donnée : l'équivalent SQL de DSPLOG.
À quoi ça sert
La fonction de table renvoie les messages du journal historique : identifiant, type, gravité, horodatage, utilisateur et travail d'origine, programme, bibliothèque et fichier de messages, texte du message et texte de second niveau. Les paramètres START_TIME (par défaut la veille) et END_TIME bornent la période lue, ce qui évite de parcourir tout l'historique.
Le paramètre GENERATE_SYSLOG ajoute les colonnes au format syslog (événement, origine, gravité, priorité), pratique pour envoyer ces messages à un outil de supervision. EOF_DELAY règle un délai en fin de fichier.
Le journal historique garde la trace des débuts et fins de travaux, des connexions et des événements système. L'exemple d'IBM s'appuie sur les messages CPF1124 (début de travail) et CPF1164 (fin de travail) pour calculer la durée des travaux utilisateurs : un calcul impossible à faire avec DSPLOG.
Résultat réel sur un IBM i 7.5
Ce que nous avons exécuté :
SELECT * FROM TABLE(QSYS2.HISTORY_LOG_INFO()) X
Ce que l'IBM i a renvoyé le 01/10/2026 (5 lignes au plus) :
| ORDINAL_POSITION Position ordinale | MESSAGE_ID Identifiant du message | MESSAGE_TYPE Type de message | MESSAGE_SUBTYPE Sous-type du message | SEVERITY Gravité | MESSAGE_TIMESTAMP Horodatage du message | FROM_USER Utilisateur d'origine | FROM_JOB Travail d'origine | FROM_JOB_NAME Nom du travail d'origine | FROM_JOB_USER Utilisateur du travail d'origine | FROM_JOB_NUMBER Numéro du travail d'origine | FROM_PROGRAM Programme d'origine | MESSAGE_LIBRARY Bibliothèque du message | MESSAGE_FILE Fichier de messages | MESSAGE_TOKENS Variables de substitution du message | MESSAGE_TEXT Texte du message | MESSAGE_SECOND_LEVEL_TEXT Texte de second niveau du message | SYSLOG_EVENT Événement syslog | SYSLOG_FACILITY Origine syslog (facility) | SYSLOG_SEVERITY Gravité syslog | SYSLOG_PRIORITY Priorité syslog |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | CPF1164 | COMPLETION | NULL | 0 | 2026-09-30 00:00:01.073149 | DUPONT | 966426/DUPONT/QHTTP | QHTTP | DUPONT | 966426 | QWTMCEOJ | *LIBL | QCPFMSG | D8C8E3E3D74040404040D8E3D4C8C8E3E3D74040F9F6F6F4F2F6F0F07AF0F07AF0F1F3F061F0F961F2F600000001000100000000000000000000032F00000000000000000000002DF0F07AF0F07AF0F2F2F961F0F961F2F6F0F07AF0F07AF0F2F2F961F0F961F2F6000000000000000000000025C2008440404040404040404040404040404040404040404040404040404040404040… | Description de l'objet | Description de l'objet | NULL | NULL | NULL | NULL |
| 2 | CPF1124 | INFORMATIONAL | NULL | 0 | 2026-09-30 00:00:01.470223 | QIJS | 968012/QIJS/RMVHSTJS | RMVHSTJS | QIJS | 968012 | QWTPIIPP | *LIBL | QCPFMSG | D9D4E5C8E2E3D1E24040D8C9D1E2404040404040F9F6F8F0F1F2F0F07AF0F07AF0F1F3F061F0F961F2F6F0F07AF0F07AF0F1F3F061F0F961F2F6D8E2E8E2E6D9D2404040D8E2E8E2404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404000000000008440404040404040404040404040404040… | Description de l'objet | NULL | NULL | NULL | NULL | NULL |
| 3 | CPF1124 | INFORMATIONAL | NULL | 0 | 2026-09-30 00:00:01.470521 | QIJS | 968011/QIJS/QIJSCCC | QIJSCCC | QIJS | 968011 | QWTPIIPP | *LIBL | QCPFMSG | D8C9D1E2C3C3C3404040D8C9D1E2404040404040F9F6F8F0F1F1F0F07AF0F07AF0F1F3F061F0F961F2F6F0F07AF0F07AF0F1F3F061F0F961F2F6D8E2E8E2E6D9D2404040D8E2E8E2404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404000000000008440404040404040404040404040404040… | Description de l'objet | NULL | NULL | NULL | NULL | NULL |
| 4 | CPF1124 | INFORMATIONAL | NULL | 0 | 2026-09-30 00:00:01.475224 | QIJS | 968013/QIJS/RMVLOGEJS | RMVLOGEJS | QIJS | 968013 | QWTPIIPP | *LIBL | QCPFMSG | D9D4E5D3D6C7C5D1E240D8C9D1E2404040404040F9F6F8F0F1F3F0F07AF0F07AF0F1F3F061F0F961F2F6F0F07AF0F07AF0F1F3F061F0F961F2F6D8E2E8E2E6D9D2404040D8E2E8E2404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404000000000008440404040404040404040404040404040… | Description de l'objet | NULL | NULL | NULL | NULL | NULL |
| 5 | CPF1124 | INFORMATIONAL | NULL | 0 | 2026-09-30 00:00:01.477478 | QIJS | 968014/QIJS/QIJSCREM | QIJSCREM | QIJS | 968014 | QWTPIIPP | *LIBL | QCPFMSG | D8C9D1E2C3D9C5D44040D8C9D1E2404040404040F9F6F8F0F1F4F0F07AF0F07AF0F1F3F061F0F961F2F6F0F07AF0F07AF0F1F3F061F0F961F2F6D8E2E8E2E6D9D2404040D8E2E8E2404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404000000000008440404040404040404040404040404040… | Description de l'objet | NULL | NULL | NULL | NULL | NULL |
Données anonymisées : les noms de système, de profils, de
bibliothèques, de postes et les adresses IP ont été remplacés. Les objets du schéma
JOBISQL sont des objets de démonstration créés pour ce site.
L'exemple d'IBM
Calculer les 50 travaux utilisateur de plus longue durée, démarrés entre hier minuit et maintenant.
-- Description: Compute the 50 user jobs with the longest time span,
-- that started between yesterday (midnight) and now
WITH new_jobs(job_name, start_time)
AS (SELECT from_job, message_timestamp
FROM TABLE(qsys2.history_log_info()) x
WHERE message_id = 'CPF1124'),
ended_jobs(job_name, end_time)
AS (SELECT from_job, message_timestamp
FROM TABLE(qsys2.history_log_info()) x
WHERE message_id = 'CPF1164')
SELECT n.job_name,
TIMESTAMPDIFF(4, CAST(end_time - start_time AS CHAR(22))) AS execution_minutes
FROM new_jobs n INNER JOIN ended_jobs e ON n.job_name = e.job_name
WHERE n.job_name NOT LIKE '%/Q%/%'
ORDER BY execution_minutes DESC
FETCH FIRST 50 ROWS ONLY ;
Bon à savoir
Borne toujours la période avec START_TIME et END_TIME : sur un système chargé, le journal historique est volumineux et la lecture complète est lente.
Paramètres
| Paramètre | Type | Par défaut | Signification |
|---|---|---|---|
START_TIME |
TIMESTAMP | ( CURRENT_DATE - 1 DAY ) | Heure de début |
END_TIME |
TIMESTAMP | '9999-12-30-00.00.00.000000' | Heure de fin |
GENERATE_SYSLOG |
VARCHAR(7) | NULL | Générer au format syslog |
EOF_DELAY |
INTEGER | NULL | Délai de fin de fichier |
Colonnes renvoyées (21)
Afficher les 21 colonnes
| Colonne | Type | Signification |
|---|---|---|
ORDINAL_POSITION |
INTEGER | Position ordinale |
MESSAGE_ID |
VARCHAR(7) | Identifiant du message |
MESSAGE_TYPE |
VARCHAR(13) | Type de message |
MESSAGE_SUBTYPE |
VARCHAR(22) | Sous-type du message |
SEVERITY |
SMALLINT | Gravité |
MESSAGE_TIMESTAMP |
TIMESTAMP | Horodatage du message |
FROM_USER |
VARCHAR(10) | Utilisateur d'origine |
FROM_JOB |
VARCHAR(28) | Travail d'origine |
FROM_JOB_NAME |
VARCHAR(10) | Nom du travail d'origine |
FROM_JOB_USER |
VARCHAR(10) | Utilisateur du travail d'origine |
FROM_JOB_NUMBER |
VARCHAR(6) | Numéro du travail d'origine |
FROM_PROGRAM |
VARCHAR(10) | Programme d'origine |
MESSAGE_LIBRARY |
VARCHAR(10) | Bibliothèque du message |
MESSAGE_FILE |
VARCHAR(10) | Fichier de messages |
MESSAGE_TOKENS |
VARCHAR(4096) | Variables de substitution du message |
MESSAGE_TEXT |
GRAPHIC VARYING | Texte du message |
MESSAGE_SECOND_LEVEL_TEXT |
GRAPHIC VARYING | Texte de second niveau du message |
SYSLOG_EVENT |
GRAPHIC VARYING | Événement syslog |
SYSLOG_FACILITY |
INTEGER | Origine syslog (facility) |
SYSLOG_SEVERITY |
INTEGER | Gravité syslog |
SYSLOG_PRIORITY |
INTEGER | Priorité syslog |