Files
Exiled-Exchange-2/docs/client-log-parser.md
2026-05-15 19:05:51 -05:00

11 KiB

title
title
Client Log Parser

Parses the game's log file (Client.txt) and puts the useful portion of its contents into a standardized jsonl|ndjson format, each line is a JSON object. Each line will always contain 3 standardized fields and a selection of additional fields depending on the type of log entry. This file currently (0.15.0) should be treated as an UNORDERED collection of log entries. It is most likely to be chronologically ordered, but this is not guaranteed.

Example

{"ts": 1697000000000, "ms": 12347, "type": "load-zone", "zone": "G1_4", "areaLevel": 4, "seed": 3044246516}
{"ts": 1697000001000, "ms": 13584, "type": "player-death", "charName": "CharacterNameHere"}
{"ts": 1697000002000, "ms": 14488, "type": "permanent-bonus", "charName": "CharacterNameHere", "permanentBonus": "+10% to [Resistances|Cold Resistance]"}

API Reference

Standard Fields

Key Type Extra Information
ts number Timestamp in milliseconds
ms number Computer power on time in milliseconds
type string The type of log entry, see below for options

Log Entry Types

log

All not denoted log entries. These are filtered out by the parser so should never be seen.

Key Type Extra Information
ts number Timestamp in milliseconds
ms number Computer power on time in milliseconds
type log The type of log entry

game-start

When the game has been launched.

Key Type Extra Information
ts number Timestamp in milliseconds
ms number Computer power on time in milliseconds
type game-start The type of log entry

login

When a player logs into a character.

Key Type Extra Information
ts number Timestamp in milliseconds
ms number Computer power on time in milliseconds
type login The type of log entry

load-zone

When a player loads into a zone.

Key Type Extra Information
ts number Timestamp in milliseconds
ms number Computer power on time in milliseconds
type load-zone The type of log entry
zone string Zone Id
areaLevel number The area level of the zone
seed number The seed of the zone
{"ts": 1697000000000, "ms": 12347, "type": "load-zone", "zone": "G1_4", "areaLevel": 4, "seed": 3044246516}

level-up

When a character levels up.

Key Type Extra Information
ts number Timestamp in milliseconds
ms number Computer power on time in milliseconds
type level-up The type of log entry
charName string The name of the character
charClass string The class of the character
level number The new level of the character
{"ts": 1697000000000, "ms": 12347, "type": "level-up", "charName": "CharacterNameHere", "charClass": "Warrior", "level": 85}

game-version

Game version, helpful for switching routing or log parsing logic

Key Type Extra Information
ts number Timestamp in milliseconds
ms number Computer power on time in milliseconds
type game-version The type of log entry
version string The game version string, poe2 is prefixed by 4.*
{"ts": 1697000000000, "ms": 12347, "type": "game-version", "version": "4.5.0a"}

alt-tab

Key Type Extra Information
ts number Timestamp in milliseconds
ms number Computer power on time in milliseconds
type alt-tab The type of log entry
gameFocused boolean false when the game lost focus, true when it gained focus
{"ts": 1697000000000, "ms": 12347, "type": "alt-tab", "gameFocused": false}

npc

Npc dialog lines, must be ones that show up in client chat window. So quest states are usually not included in this.

Key Type Extra Information
ts number Timestamp in milliseconds
ms number Computer power on time in milliseconds
type npc The type of log entry
npcName string The name of the NPC
message string The NPC's message
{"ts": 1697000000000, "ms": 12347, "type": "npc", "npcName": "NpcNameHere", "message": "Message here"}

player-death

Entries for non-hardcore viable characters

Key Type Extra Information
ts number Timestamp in milliseconds
ms number Computer power on time in milliseconds
type player-death The type of log entry
charName string The name of the character
{"ts": 1697000001000, "ms": 13584, "type": "player-death", "charName": "CharacterNameHere"}

passive-tree

Timestamps for when allocating nodes on passive tree

Key Type Extra Information
ts number Timestamp in milliseconds
ms number Computer power on time in milliseconds
type passive-tree The type of log entry
allocate boolean Whether the node was allocated or deallocated
nodeId string The id of the passive node
nodeName string The name of the passive node
{"ts": 1697000000000, "ms": 12347, "type": "passive-tree", "allocate": true, "nodeId": "duelist_mercenary_notable2", "nodeName": "Remorseless"}

permanent-bonus

Campaign granted permanent bonuses, such as from Beira, Candlemass, or clicking objectives.

Key Type Extra Information
ts number Timestamp in milliseconds
ms number Computer power on time in milliseconds
type permanent-bonus The type of log entry
charName string The name of the character
permanentBonus string The bonus string
{"ts": 1697000002000, "ms": 14488, "type": "permanent-bonus", "charName": "CharacterNameHere", "permanentBonus": "+10% to [Resistances|Cold Resistance]"}

skill-point

Specific type of permanent bonus for skill points, Mighty Silverfist or completing areas of corruption on the atlas

Key Type Extra Information
ts number Timestamp in milliseconds
ms number Computer power on time in milliseconds
type skill-point The type of log entry
points number Number of points, mostly 1 or 2
pointType passive|weapon-set|atlas|map-boss|arbiter-boss|abyss|ritual|delirium|expedition|breach type of passive point
{"ts": 1697000000000, "ms": 12347, "type": "skill-point", "points": 1, "pointType": "passive"}

map-nav

What the foreground scene is changed to, may indicate loading or map/atlas opening

Key Type Extra Information
ts number Timestamp in milliseconds
ms number Computer power on time in milliseconds
type map-nav The type of log entry
mapName string The name of the map navigated to, or (null) for loading screen, (unknown) for main menu, Act X for fullscreen map, Atlas for opening map device
{"ts": 1697000000000, "ms": 12347, "type": "map-nav", "mapName": "Act 1"}

afk

Entry for when the player becomes afk, or stops being afk, time of afk can be assumed to be ~15 minutes + isAfk:false - isAfk:true time

Key Type Extra Information
ts number Timestamp in milliseconds
ms number Computer power on time in milliseconds
type afk The type of log entry
isAfk boolean Whether player is starting or stopping being afk
{"ts": 1697000000000, "ms": 12347, "type": "afk", "isAfk": true}