A VS Code extension for analyzing IBM i job logs. Quickly find errors and issues in large job log files.
See the GitHub Releases page for the latest updates and release notes.
- Custom Tree View: Dedicated "Job Log Detective" panel with filtering and navigation
- Smart Analysis: Highlights high-severity messages and analyzes the log for errors
- Timeline View: Chronological view with time buckets to identify when issues occurred
- Outline View Integration: View messages grouped by type and message ID in the VS Code Outline
- Quick Navigation: Click on any message to jump to its location in the file
- Rich Tooltips: Hover over messages to see full details including cause and recovery
- Automatic Detection: Automatically detects IBM i job log files by content or filename pattern
- Multi-Language Support: Parses job logs in English, German, Dutch, French, Italian, and Spanish
The extension automatically detects and parses job logs in:
| Language | Header | Message Types |
|---|---|---|
| English | Job Log | Command, Completion, Diagnostic, Escape, Information, etc. |
| German | Jobprotokoll | Befehl, Beendigung, Diagnose, Abbruch, Information, etc. |
| Dutch | Taaklogboek | Opdracht, Voltooiing, Diagnose, Afbreken, Informatie, etc. |
| French | Historique du travail | Commande, Achèvement, Diagnostic, Echappement, Information, etc. |
| Italian | Visual. registrazione lavoro | Comando, Completamento, Diagnosi, Uscita, Informazioni, etc. |
| Spanish | Mostrar registro trabajo | Mandato, Terminación, Diagnóstico, Escape, Informativo, etc. |
The extension recognizes all IBM i message types:
- Escape - Program termination messages (highest priority)
- Diagnostic - Error messages
- Information - General informational messages
- Completion - Task completion status
- Command - Command execution (hidden by default)
- Request - Command requests
- Inquiry - Messages requiring a reply
- Reply - Responses to inquiries
- Notify - Notification messages
- Sender Copy - Copies of sent messages
The Job Log Detective panel organizes messages into these sections:
Shows job completion status, total message count, and high severity statistics.
Recent high-severity messages (Escape and Diagnostic) that likely indicate the root cause of issues.
All filtered messages grouped by time buckets. Helps identify when issues occurred.
| Job Duration | Bucket Size |
|---|---|
| < 1 minute | 1 second |
| 1-10 minutes | 10 seconds |
| 10-60 minutes | 30 seconds |
| > 60 minutes | 1 minute |
Buckets show 🔥 icons based on the percentage of high-severity messages:
- 1-20% = 🔥
- 21-40% = 🔥🔥
- 41-60% = 🔥🔥🔥
- 61-80% = 🔥🔥🔥🔥
- 81-100% = 🔥🔥🔥🔥🔥
Messages grouped by type (Escape, Diagnostic, Information, etc.), then by message ID.
The extension provides visual indicators directly in the editor for filtered job log messages:
| Level | Icon | Background | Applies To |
|---|---|---|---|
| Escape | 🔥 Red flame | Light red | Escape type messages |
| High Severity | 🔥 Orange flame | Light orange | Messages with severity ≥ threshold |
| Diagnostic | 🔥 Yellow flame | Light yellow | Diagnostic type messages |
Features:
- Gutter icons: Flame icons appear in the gutter next to relevant lines
- Background highlighting: Subtle background colors (theme-aware for light/dark themes)
- Overview ruler: Color markers on the scrollbar for quick navigation
- Minimap: Color bands showing message locations
- Hover tooltips: Message details when hovering over decorations
Decorations automatically update when filters change, showing only the currently filtered messages.
- Open a job log file (files named
QPJOBLOGor containing IBM i job log format) - The extension will automatically detect and analyze the file
- Use the Outline view or Job Log Detective panel to navigate
- Click on messages to jump to their location
- Use the filter buttons to focus on specific message types or severity levels
If automatic detection doesn't work:
- Open the Command Palette (
Ctrl+Shift+P/Cmd+Shift+P) - Run "Job Log Detective: Set as IBM i Job Log"
| Setting | Default | Description |
|---|---|---|
joblogDetective.highSeverityThreshold |
30 |
Messages with severity >= this value are highlighted |
joblogDetective.hideCommandMessages |
true |
Hide Command type messages by default |
joblogDetective.autoDetect |
true |
Automatically detect job log files by content |
joblogDetective.enableEditorDecorations |
true |
Show flame icons and highlighting in the editor |
- Job Log Detective: Analyze Job Log - Manually trigger analysis
- Job Log Detective: Set as IBM i Job Log - Force the current file to be treated as a job log
- Job Log Detective: Refresh Analysis - Re-parse and refresh the analysis
- Job Log Detective: Filter by Message Type - Filter to specific message types
- Job Log Detective: Show High Severity Only - Toggle to show only high severity messages
- Job Log Detective: Toggle Editor Decorations - Enable/disable flame icons and highlighting
The extension detects job logs by:
- File named
QPJOBLOG(any extension) - Files with
.joblogextension - Content containing:
- IBM i product ID (
5770SS1or similar) - Version pattern (
V7R6M0format) - "Job Log" header text (in any supported language)
- IBM i product ID (
When a job log is opened, the extension shows notifications based on the analysis results:
| Condition | Notification |
|---|---|
| Clean job log (no errors) | Status bar message only (message count, parse time) |
| Job log with Escape or Diagnostic messages | Warning popup with error/diagnostic counts |
| Job ended abnormally (CPF1164 with non-zero end code) | Warning popup indicating abnormal termination |
Note: Job logs containing only Information, Command, Completion, or Request messages are considered "clean" and do not trigger a warning popup. The Job Log Detective panel still displays all parsed messages for analysis.
# Install dependencies
npm install
# Compile
npm run compile
# Test
npx vitest run
# Watch for changes
npm run watch
# Run extension in development
Press F5 in VS CodeTo add support for a new language, edit src/localization.ts:
- Create a new
LanguageDefinitionobject following the pattern of existing languages - Add the language to the
ALL_LANGUAGESarray - The extension will automatically detect and parse job logs in the new language
Example language definition structure:
const NEW_LANGUAGE: LanguageDefinition = {
name: 'Language Name',
jobLogTitle: 'Localized Job Log Title',
messageTypes: {
'Local Command': 'Command',
'Local Completion': 'Completion',
// ... map local names to English
},
detailFields: {
fromModule: 'From module|Localized from module',
// ... other field patterns
}
};Translations can be added to the i18n directory.
MIT
