Oninit® Logwalker — Default (HUMAN) output
The default mode. Each line is one log record, prefixed with the record's LSN in the canonical Informix <uniqid>:<low> form, followed by the transaction id and a plain-English description of what the record represents.
The LSN low half uses the documented slotted-page encoding (page_idx « 12) | offset_in_page — not the raw chunk byte offset. Two records on different pages with the same within-page offset have different low halves; the LSN value is the canonical Informix way to refer to a log position and is what the loghdr’s link field carries.
Invocation
$ logwalker -n 271 -m 12
Output
The default mode auto-loads the cheap phase-1 catalog (sysmaster.systabnames, ~2 seconds on a 2K-table instance) so each record’s primary partnum resolves to its <db>.<table> or <db>.<index> name. Partnums that don’t resolve (newly-created partitions the catalog snapshot missed, restricted databases) fall back to partition 0xHH so the line stays readable.
# logwalker v0.6.0 — uniqid=271 extents=1 total_pages=5000 # extent[0]: chunk=1 path=/home/informix/data/rootdbs byte_off=0x3157800 pagesize=2048 n_pages=5000 [logwalker] catalog: 2104 named partitions loaded (tables + indexes) from sysmaster. LSN 271:0x00000018 xid=31 BEGIN transaction (pid=26847, started 2026-05-06 01:00:06) LSN 271:0x00000050 xid=31 UNIQID — reserved next serial 883 for testdb.syssurrogateauth LSN 271:0x00000080 xid=31 INSERT into testdb.syssurrogateauth (rowid 0x00000101, 169 bytes) LSN 271:0x0000016c xid=31 ADDITEM — index entry on testdb.syssurrogateauth_pk for rowid 0x001007ef LSN 271:0x000001ac xid=31 UNIQID — reserved next serial 884 for testdb.syssurrogateauth LSN 271:0x000001dc xid=31 INSERT into testdb.syssurrogateauth (rowid 0x00000102, 169 bytes) LSN 271:0x000002c8 xid=31 ADDITEM — index entry on testdb.syssurrogateauth_pk for rowid 0x001007ef LSN 271:0x00000308 xid=31 COMMIT at 2026-05-06 01:00:06 LSN 271:0x00001018 xid=31 BEGIN transaction (pid=26847, started 2026-05-06 01:00:06) LSN 271:0x00001050 xid=31 UNIQID — reserved next serial 885 for testdb.syssurrogateauth LSN 271:0x00001080 xid=31 INSERT into testdb.syssurrogateauth (rowid 0x00000103, 168 bytes) LSN 271:0x00001168 xid=31 COMMIT at 2026-05-06 01:00:06
With --decode-rows
Adding --decode-rows additionally loads phase 2 of the catalog — per-database syscolumns — and uses the column metadata to render row-image bytes as (col=val) pairs on an indented continuation line below each row-shaped record. Restricted databases fall back to the un-annotated form; the column snapshot is best-effort.
$ logwalker -n 271 -m 8 --decode-rows
[logwalker] catalog: 2104 named partitions loaded (tables + indexes) from sysmaster.
LSN 271:0x00000018 xid=31 BEGIN transaction (pid=26847, started 2026-05-06 01:00:06)
LSN 271:0x00000050 xid=31 UNIQID — reserved next serial 883 for testdb.syssurrogateauth
LSN 271:0x00000080 xid=31 INSERT into testdb.syssurrogateauth (rowid 0x00000101, 169 bytes)
(auth_id=883, user='operator', client_pid=26847, …)
LSN 271:0x0000016c xid=31 ADDITEM — index entry on testdb.syssurrogateauth_pk for rowid 0x001007ef
LSN 271:0x000001ac xid=31 UNIQID — reserved next serial 884 for testdb.syssurrogateauth
LSN 271:0x000001dc xid=31 INSERT into testdb.syssurrogateauth (rowid 0x00000102, 169 bytes)
(auth_id=884, user='operator', client_pid=26847, …)
LSN 271:0x000002c8 xid=31 ADDITEM — index entry on testdb.syssurrogateauth_pk for rowid 0x001007ef
LSN 271:0x00000308 xid=31 COMMIT at 2026-05-06 01:00:06
Reading it
- Column 1 (LSN): Informix log sequence number <uniqid>:0x<low>. Same shape Informix tools and the loghdr's link field use, so cross-referencing with onlog output or with another tool's checkpoint values is a direct match.
- Column 2 (xid): Informix transaction id. Note that xid is not unique across a log — it gets recycled after a transaction commits or rolls back. To group lines by their actual transaction (rather than by xid value), use --group-by-xid; see that example.
- Column 3 (description): plain-English summary of the record. Operations that mutate user data (BEGIN, COMMIT, ROLLBACK, INSERT, DELETE, UPDATE) read as full sentences; infrastructure records (UNIQID, ADDITEM, CHALLOC, CHFREE, PTRUNCATE) name the operation and its key fields. Unknown record types fall back to type 0xHHHH so the rest of the line stays usable.
For the legacy onlog -l 6-column form (used by scripts that already parse it), see --compat onlog. For per-transaction grouping with explicit BEGIN / COMMIT framing, see --group-by-xid.