Skip to content

Log Receiver

v1.0.0New

The Log Receiver is a system component that collects logs from every LOPs operator in your project into a single central table. It also holds the master Logger 2.0 template that gets distributed to operators when they are placed, and stores user preferences that control default logging behavior across the system.

Every LOPs operator contains a Logger component. When an operator’s Logger has central logging enabled, it sends log entries to the Log Receiver, which appends them to a shared central_logs table. This gives you a single place to monitor activity across your entire LOPs network.

The Log Receiver also serves two behind-the-scenes roles:

  • It contains the master Logger 2.0 COMP that gets copied into new operators when they are placed in your project.
  • It exposes default logging preferences that are automatically applied to each new operator’s Logger on placement.

These preferences are surfaced as a “Logging” tab in the LOPs Settings UI, so you can configure system-wide logging behavior from one place.

  • Aggregates log entries from all operators into one central table
  • Configurable default preferences for local logging, central logging, textport printing, and log level
  • Row limit on the central log to prevent unbounded memory growth
  • One-pulse export of the central log to a timestamped CSV file
  • Master Logger 2.0 template distributed to all new operators on placement

The Log Receiver has a single output carrying the central_logs table. This table has five columns: timestamp, level, source, info, and details. You can wire this output to any downstream DAT for filtering, display, or further processing.

The settings under Default Logger Settings on the Logging page control what every newly placed operator’s Logger will default to:

  1. Toggle Log to Local Table to control whether new operators write logs to their own internal log table.
  2. Toggle Log to Central to control whether new operators send logs to this central receiver.
  3. Toggle Print to Textport to control whether new operators print log messages to the TouchDesigner textport.
  4. Set Default Log Level to choose the verbosity for new operators: “All Logs”, “Basic”, or “Errors Only”.

These defaults are applied at placement time. Changing them does not retroactively update existing operators — each operator’s Logger can still be configured individually.

Under the Central Log section on the Logging page:

  1. Set Max Central Rows to limit how many log entries the central table retains. When the limit is exceeded, the oldest entries are trimmed automatically.
  2. Pulse Clear Central Log to wipe all entries from the central log table.
  3. Pulse Export Central Log to save the current central log as a timestamped CSV file in your project folder (e.g., central_logs_20260326_143022.csv).

Wire the Log Receiver’s output into a Table DAT viewer or any downstream operator to watch log entries arrive in real time from across your LOPs network. The source column identifies which operator produced each log entry, making it straightforward to trace activity back to a specific component.

  • Enable Log to Central in the defaults when debugging complex multi-operator networks so you can see all activity in one place. Disable it during normal operation to reduce overhead.
  • Set a reasonable Max Central Rows value to prevent the central table from growing indefinitely during long sessions.
  • Use Export Central Log to save a snapshot before clearing, especially when diagnosing intermittent issues.
  • Individual operator Loggers can override any of these defaults — the Log Receiver only sets the starting configuration for newly placed operators.
Logstatus (Logstatus) op('log_receiver').par.Logstatus Str
Default:
"" (Empty String)
Default Logger Settings Header
Log to Local Table (Defaultloglocal) op('log_receiver').par.Defaultloglocal Toggle
Default:
False
Log to Central (Defaultlogcentral) op('log_receiver').par.Defaultlogcentral Toggle
Default:
False
Print to Textport (Defaultprintlogs) op('log_receiver').par.Defaultprintlogs Toggle
Default:
False
Default Log Level (Defaultloglevel) op('log_receiver').par.Defaultloglevel Menu
Default:
All Logs
Options:
All Logs, Basic, Errors Only
Central Log Header
Max Central Rows (Maxcentralrows) op('log_receiver').par.Maxcentralrows Int
Default:
0
Range:
0 to 1
Slider Range:
0 to 1
Clear Central Log (Clearcentral) op('log_receiver').par.Clearcentral Pulse
Default:
False
Export Central Log (Exportcentral) op('log_receiver').par.Exportcentral Pulse
Default:
False
v1.0.02026-03-26
  • Add Clearlog pulse parameter to Logger 2.0 master COMP
v0.1.02026-03-16
  • Logger 2.0 class with central emit and safe parameter fallbacks - LogReceiverExt with user preference parameters and central log table - Master Logger COMP parameter setup (Loglocal, Logcentral, Printlogs, Showlogs, Maxlogrows, Converttotext, Reverse) - Central log aggregation via ReceiveLog with trim and export - GetUserDefaults and GetLoggerComp for onPostPlaceOp integration
  • Initial log_receiver structure
  • Initial commit