# Management of Traces > Symcon documentation · English · generated on 2026-11-09 > Index: https://www.symcon.de/en/llms.txt ## Contents Pages in this file: - IPS_GetTraceIDList – returns the IDs of the trace entries of an object - IPS_GetTraceList – returns a trace entry with its cause chain Source: https://www.symcon.de/en/service/documentation/command-reference/management-traces/ ## IPS_GetTraceIDList Source: https://www.symcon.de/en/service/documentation/command-reference/management-traces/ips-gettraceidlist/ `array IPS_GetTraceIDList(int $ObjectID)` returns the IDs of the trace entries of an object **Parameters** - `$ObjectID` (int): ID of the object whose trace entries are to be returned **Returns** (array): An array with the IDs (TraceID) of the kept trace entries of the object, oldest first. In traces the kernel records what caused what: every entry represents one operation – e.g. writing a variable, the event triggered by it, its action or script, a RequestAction, a timer or a request to the WebServer – and refers to the entry that caused it via __ParentID__ and to the entries it caused itself via __ChildIDs__. For every cause this results in a tree that shows, for example, why a variable has changed. The function returns the IDs of all kept entries that belong to the object **ObjectID** – e.g. the write operations of a variable or the executions of an event. These are at most the last 25 entries. For an object without entries or a non-existing ID an empty array is returned. If 1 is passed as **ObjectID**, the IDs of all kept entries are returned in arbitrary order. The entries themselves and their cause chain are returned by [IPS_GetTraceList](management-traces.md). Traces are only kept in memory and are lost on a restart. The last 25 entries are kept per object, and the last 1000 entries in total for entries without an object (e.g. WebServer). An older entry is kept as long as a kept entry still descends from it, so chains stay complete. When an object is deleted, its entries are removed. Strings in __Data__ are shortened to 100 bytes and marked with "...". **Example** ```php print_r(IPS_GetTraceIDList(10018)); /* e.g. returns: Array ( [0] => 1 [1] => 2 ) */ ``` ## IPS_GetTraceList Source: https://www.symcon.de/en/service/documentation/command-reference/management-traces/ips-gettracelist/ `array IPS_GetTraceList(int $TraceID)` returns a trace entry with its cause chain **Parameters** - `$TraceID` (int): ID of the trace entry **Returns** (array) An array of trace entries, starting with the entry **TraceID**, followed by its parent entry and so on up to the start of the chain. Each entry contains the following information as key => value pairs: | Index | Type | Description | | ----------------- | ------- | ----------------------------------------------------------------------------------------------- | | __TraceID__ | integer | Unique, ascending ID of the entry | | __ParentID__ | integer | ID of the entry that caused this entry (0 = start of a chain) | | __ChildIDs__ | array | IDs of the entries caused by this entry | | __Depth__ | integer | Position in the chain, starting at 1 (0 = placeholder for an entry that is no longer available) | | __ObjectID__ | integer | ID of the object the entry belongs to (1 = no object, e.g. for WebServer) | | __Sender__ | string | Kind of entry (see sender table) | | __ExecutionUser__ | string | User on whose behalf it was executed (e.g. @admin; @unknown if no user was logged in) | | __TimeStamp__ | integer | Unix timestamp of the creation | | __Data__ | array | Additional information as key => value pairs, depending on the sender (see sender table) | __Sender table__ | Sender | Description | ObjectID | Data | | ------------- | -------------------------------------------------------------------------- | ------------------ | ---------------------------------------------------------- | | Variable | A value was written to a variable (even without a change) | Variable | VariableID, Value, OldValue | | RequestAction | The action of a variable was requested | Variable | VariableID, ActionID, Value, Sender | | RequestAction | The RequestAction function of an instance was called for a status variable | Instance | Ident, Value | | TriggerEvent | A triggered event runs its action | Event | EventID, ActionID, Environment, Trigger, VariableID, Value | | CyclicEvent | A cyclic event runs its action | Event | EventID, ActionID, Environment | | Script | A script is executed | Script | Sender, ScriptID, FilePath, SenderID | | Event | PHP code is executed on behalf of an event | Event | Sender, ScriptID, FilePath, SenderID | | Instance | PHP code is executed for a target object | Target object | Sender, ScriptID, FilePath, SenderID | | Timer | A timer of an instance is executed | Instance | TimerName, Instance, RunOnce | | DataFlow | An instance receives data through the data flow | Receiving instance | InstanceID, ParentID | | WebServer | A request to the WebServer (file/hook) or a JSON-RPC call | 1 | Path or Method, RemoteIP, ProxyIPs (only behind proxies) | | System | Placeholder for an entry that is no longer available | 1 | Reason | In traces the kernel records what caused what: every entry represents one operation – e.g. writing a variable, the event triggered by it, its action or script, a RequestAction, a timer or a request to the WebServer – and refers to the entry that caused it via __ParentID__ and to the entries it caused itself via __ChildIDs__. For every cause this results in a tree that shows, for example, why a variable has changed. The function returns the entry **TraceID** and all entries that caused it: the first element is the entry itself, the last element is the start of the chain (__ParentID__ 0). The entries caused by an entry are listed in __ChildIDs__ and can also be retrieved with this function. The IDs of the entries of an object are returned by [IPS_GetTraceIDList](management-traces.md). If an entry of the chain is no longer available, the list ends with a placeholder: __Depth__ 0, __Sender__ "System", __ObjectID__ 1 and the reason in __Data__ → __Reason__. If there is no entry with the ID **TraceID**, the function fails with "No trace with ID … found". Traces are only kept in memory and are lost on a restart. The last 25 entries are kept per object, and the last 1000 entries in total for entries without an object (e.g. WebServer). An older entry is kept as long as a kept entry still descends from it, so chains stay complete. When an object is deleted, its entries are removed. Strings in __Data__ are shortened to 100 bytes and marked with "...". **Example** ```php print_r(IPS_GetTraceList(1)); /* e.g. returns: Array ( [0] => Array ( [ChildIDs] => Array ( ) [Data] => Array ( [OldValue] => 0 [Value] => 5 [VariableID] => 10018 ) [Depth] => 1 [ExecutionUser] => @admin [ObjectID] => 10018 [ParentID] => 0 [Sender] => Variable [TimeStamp] => 1700000000 [TraceID] => 1 ) ) */ // Output the cause chain of the newest entry of a variable $ids = IPS_GetTraceIDList(10018); if (count($ids) > 0) { foreach (IPS_GetTraceList(end($ids)) as $entry) { echo $entry['Depth'] . ': ' . $entry['Sender'] . ' #' . $entry['ObjectID'] . PHP_EOL; } } ```