# aalog — LogRecord field reference The `--llm-json` envelope emits records of shape `LogRecordDto`, an LLM-friendly subset of the upstream [`aaLogReader.LogRecord`](https://github.com/aaOpenSource/aaLog/blob/master/aaLogReader/Types/LogRecord.cs) (declared in the bare `aaLogReader` namespace despite the file path). File-format internals (`RecordLength`, `OffsetToPrevRecord`, `OffsetToNextRecord`) and the redundant `EventDate` / `EventTime` / `EventMillisec` triple are dropped. ## Fields | Field | Type | Source | Meaning | | --- | --- | --- | --- | | `MessageNumber` | `ulong` | `LogRecord.MessageNumber` | Monotonic record id assigned by the logger. Stable across reads of the same log directory; useful as a cursor. | | `TimestampUtc` | `string` | `LogRecord.EventDateTimeUtc` | Event time in UTC, ISO-8601 with `Z` suffix and millisecond precision (`2026-05-03T13:59:42.117Z`). | | `TimestampLocal` | `string` | `LogRecord.EventDateTimeLocal`| Event time in the host's local zone, ISO-8601 without offset (`2026-05-03T08:59:42.117`). | | `Level` | `string` | `LogRecord.LogFlag` | Severity / category. Common values: `Info`, `Warning`, `Error`, `Trace`, `Debug`. | | `Component` | `string` | `LogRecord.Component` | Originating subsystem (e.g. `aaEngine`, `Bootstrap`, `aaGR`, `aaIDE`). Best filter axis for narrowing scope. | | `ProcessName` | `string` | `LogRecord.ProcessName` | Name of the OS process that emitted the record. | | `ProcessId` | `uint` | `LogRecord.ProcessID` | OS process id. | | `ThreadId` | `uint` | `LogRecord.ThreadID` | OS thread id within the process. | | `SessionId` | `string` | `LogRecord.SessionID` | Session identifier; often empty. | | `Host` | `string` | `LogRecord.HostFQDN` | Fully-qualified host name at time of emission. | | `Message` | `string` | `LogRecord.Message` | Free-form message body. | ## Backward / forward compatibility - **Adding a new field** to `LogRecordDto` is non-breaking. Agents that pin the existing field set continue to work. - **Renaming or removing a field** is breaking. If it ever happens, bump this doc and the `--llm-json` example in [`usage.md`](usage.md) in the same change. - The upstream library's underlying `LogRecord` may change shape across `aaLogReader.dll` versions. The CLI shields callers from that — only fields mapped explicitly in `LogRecordDto.From` ([`src/AaLog.Cli/Output/LogRecordDto.cs`](../src/AaLog.Cli/Output/LogRecordDto.cs)) reach the JSON envelope. ## Quick reference at runtime ```powershell aalog fields ``` prints the same field list to stdout in plain text — useful when the caller can't load this file.