Logging
Records contract events (accepted, completed, claimed, and more) to a log file. Logging is off by
default: set a Mode, then enable the individual events you care about.
{ "Logging": { "Mode": "None", "Retention Days": 30, "Contract Accepted": { "Enabled": false, "Format (Text Mode)": "..." } }}Mode and retention
Section titled “Mode and retention”| Field | Type | Default | Description |
|---|---|---|---|
Mode | enum: None | Text | JSONL | "None" | Log file format. None turns logging off. Text writes one line per event using each event's format. JSONL writes one JSON object per line. |
Retention Days | integer | 30 | Days of log files to keep. Older files get deleted. 0 or less keeps everything forever. |
Pick JSONL mode if you want the web editor’s stats graphs.
Each event below has its own Enabled flag and, for Text mode, a Format (Text Mode) string. The
format is a template: the {tokens} in it are replaced with the event’s values when the line is
written. In JSONL mode the tokens are emitted as fields instead, so the format string is not used.
Every event also accepts the five time tokens listed first in each table, in addition to the default format’s tokens.
Contract Accepted
Section titled “Contract Accepted”Logged when a player accepts a contract. Default Enabled: false.
[{timestamp_utc}] {player_name} ({player_id}) accepted contract {contract_name} ({contract_id}) in {category_name} ({category_id})| Token | Meaning |
|---|---|
{timestamp_utc} | Event time in UTC (YYYY-MM-DD HH:MM:SS). |
{timestamp_iso} | Event time in UTC, ISO 8601. |
{timestamp_local} | Event time in the server's local timezone (YYYY-MM-DD HH:MM:SS). |
{time_utc} | Time of day in UTC (HH:MM:SS). |
{time_local} | Time of day in the server's local timezone (HH:MM:SS). |
{player_name} | The player's display name. |
{player_id} | The player's Steam ID. |
{contract_name} | The contract's title. |
{contract_id} | The contract's id (its key in the data file). |
{category_name} | The category's name. |
{category_id} | The category's id. |
Contract Completed
Section titled “Contract Completed”Logged when a player finishes all of a contract’s objectives. Default Enabled: false.
[{timestamp_utc}] {player_name} ({player_id}) completed contract {contract_name} ({contract_id}) in {category_name} ({category_id}) in {duration}s| Token | Meaning |
|---|---|
{timestamp_utc} | Event time in UTC (YYYY-MM-DD HH:MM:SS). |
{timestamp_iso} | Event time in UTC, ISO 8601. |
{timestamp_local} | Event time in the server's local timezone (YYYY-MM-DD HH:MM:SS). |
{time_utc} | Time of day in UTC (HH:MM:SS). |
{time_local} | Time of day in the server's local timezone (HH:MM:SS). |
{player_name} | The player's display name. |
{player_id} | The player's Steam ID. |
{contract_name} | The contract's title. |
{contract_id} | The contract's id (its key in the data file). |
{category_name} | The category's name. |
{category_id} | The category's id. |
{duration} | Seconds taken to complete, from acceptance to finish. |
Contract Claimed
Section titled “Contract Claimed”Logged when a player claims a completed contract’s reward. Default Enabled: false.
[{timestamp_utc}] {player_name} ({player_id}) claimed contract {contract_name} ({contract_id}) in {category_name} ({category_id})| Token | Meaning |
|---|---|
{timestamp_utc} | Event time in UTC (YYYY-MM-DD HH:MM:SS). |
{timestamp_iso} | Event time in UTC, ISO 8601. |
{timestamp_local} | Event time in the server's local timezone (YYYY-MM-DD HH:MM:SS). |
{time_utc} | Time of day in UTC (HH:MM:SS). |
{time_local} | Time of day in the server's local timezone (HH:MM:SS). |
{player_name} | The player's display name. |
{player_id} | The player's Steam ID. |
{contract_name} | The contract's title. |
{contract_id} | The contract's id (its key in the data file). |
{category_name} | The category's name. |
{category_id} | The category's id. |
Contract Abandoned
Section titled “Contract Abandoned”Logged when a player abandons a contract they had accepted. Default Enabled: false.
[{timestamp_utc}] {player_name} ({player_id}) abandoned contract {contract_name} ({contract_id}) in {category_name} ({category_id})| Token | Meaning |
|---|---|
{timestamp_utc} | Event time in UTC (YYYY-MM-DD HH:MM:SS). |
{timestamp_iso} | Event time in UTC, ISO 8601. |
{timestamp_local} | Event time in the server's local timezone (YYYY-MM-DD HH:MM:SS). |
{time_utc} | Time of day in UTC (HH:MM:SS). |
{time_local} | Time of day in the server's local timezone (HH:MM:SS). |
{player_name} | The player's display name. |
{player_id} | The player's Steam ID. |
{contract_name} | The contract's title. |
{contract_id} | The contract's id (its key in the data file). |
{category_name} | The category's name. |
{category_id} | The category's id. |
Contract Expired
Section titled “Contract Expired”Logged when an accepted contract expires because its category rotated before the player finished it.
Default Enabled: false.
[{timestamp_utc}] {player_name} ({player_id}) expired contract {contract_name} ({contract_id}) in {category_name} ({category_id}) after {duration}s| Token | Meaning |
|---|---|
{timestamp_utc} | Event time in UTC (YYYY-MM-DD HH:MM:SS). |
{timestamp_iso} | Event time in UTC, ISO 8601. |
{timestamp_local} | Event time in the server's local timezone (YYYY-MM-DD HH:MM:SS). |
{time_utc} | Time of day in UTC (HH:MM:SS). |
{time_local} | Time of day in the server's local timezone (HH:MM:SS). |
{player_name} | The player's display name. |
{player_id} | The player's Steam ID. |
{contract_name} | The contract's title. |
{contract_id} | The contract's id (its key in the data file). |
{category_name} | The category's name. |
{category_id} | The category's id. |
{duration} | Seconds the contract was active before expiring. |
Reward Given
Section titled “Reward Given”Logged when a reward is handed to a player. Default Enabled: false.
amount is what the player actually received. When a reward multiplier tier
raised or lowered it, multiplier carries the factor that was used. JSONL lines leave multiplier
out when no tier changed the amount.
[{timestamp_utc}] {player_name} ({player_id}) received {reward_type} reward: {reward_detail} from contract {contract_name} ({contract_id})| Token | Meaning |
|---|---|
{timestamp_utc} | Event time in UTC (YYYY-MM-DD HH:MM:SS). |
{timestamp_iso} | Event time in UTC, ISO 8601. |
{timestamp_local} | Event time in the server's local timezone (YYYY-MM-DD HH:MM:SS). |
{time_utc} | Time of day in UTC (HH:MM:SS). |
{time_local} | Time of day in the server's local timezone (HH:MM:SS). |
{player_name} | The player's display name. |
{player_id} | The player's Steam ID. |
{reward_type} | The reward type: Item, Economics, Command, or ServerRewards. |
{reward_detail} | A human-readable description of the reward (e.g. item and quantity, or amount). |
{reward_name} | The reward's display title. |
{reward_id} | The reward's id. |
{objective_id} | The objective's id, when the reward came from an objective. Empty for a contract reward. |
{amount} | The amount handed to the player, after any reward multiplier. |
{multiplier} | The reward multiplier applied to the amount. 1 when no tier matched and JSON lines leave the field out then. |
{contract_name} | The contract's title. |
{contract_id} | The contract's id (its key in the data file). |
{category_name} | The category's name. |
{category_id} | The category's id. |
Rotation Started
Section titled “Rotation Started”Logged when a category rotates to a new set of contracts. Default Enabled: false.
[{timestamp_utc}] Category {category_name} ({category_id}) rotated. Contracts: {contract_ids}.| Token | Meaning |
|---|---|
{timestamp_utc} | Event time in UTC (YYYY-MM-DD HH:MM:SS). |
{timestamp_iso} | Event time in UTC, ISO 8601. |
{timestamp_local} | Event time in the server's local timezone (YYYY-MM-DD HH:MM:SS). |
{time_utc} | Time of day in UTC (HH:MM:SS). |
{time_local} | Time of day in the server's local timezone (HH:MM:SS). |
{category_name} | The category's name. |
{category_id} | The category's id. |
{contract_ids} | The ids of the contracts now in rotation, comma-separated. |
Objective Completed
Section titled “Objective Completed”Logged when a player finishes a single objective within a contract. Default Enabled: false.
[{timestamp_utc}] {player_name} ({player_id}) completed objective {objective_name} (#{objective_id}) in contract {contract_name} ({contract_id})| Token | Meaning |
|---|---|
{timestamp_utc} | Event time in UTC (YYYY-MM-DD HH:MM:SS). |
{timestamp_iso} | Event time in UTC, ISO 8601. |
{timestamp_local} | Event time in the server's local timezone (YYYY-MM-DD HH:MM:SS). |
{time_utc} | Time of day in UTC (HH:MM:SS). |
{time_local} | Time of day in the server's local timezone (HH:MM:SS). |
{player_name} | The player's display name. |
{player_id} | The player's Steam ID. |
{objective_name} | The objective's title. |
{objective_id} | The objective's id (its key in the contract). |
{objective_type} | The objective's type (e.g. Kill, Gather, Loot). |
{contract_name} | The contract's title. |
{contract_id} | The contract's id (its key in the data file). |
{category_name} | The category's name. |
{category_id} | The category's id. |
