Logging

Fusor Studio writes a log file you can attach to bug reports when something doesn't behave the way you expect. By default the file stays small (warnings, errors, and a line each time the MIDI output and input open) so you don't need to think about it during normal use. When you hit a bug, turn verbose logging on, reproduce the issue, then attach the file to your report.


Where the log file lives

Windows:

%APPDATA%\fusor-studio\logs\main.log

Mac:

~/Library/Application Support/fusor-studio/logs/main.log

main.log records engine, MIDI, IPC and other behind-the-scenes activity, and errors raised in the app's windows.

The file rotates at 5 MB, at which point the previous contents move to main.old.log. So the folder holds up to two files once you've been running a while. You don't need to clean up.


Settings → Logging

Open the Settings window and choose the Logging tab.

Verbose logging switch

A single master switch at the top.

  • Off (default): only warn and error messages are written to the file, regardless of the per-category settings below, plus two info lines each time Fusor Studio connects to your DJ application: Opened output: <port> and Opened input: <port>. Use them to confirm which MIDI port was opened. The file stays small and only fills up when something actually goes wrong.
  • On: every per-category dropdown below is honored. Use this when you're reproducing a bug and want detailed information captured.

Turn it back off after you've collected what you need so the file doesn't grow.

Per-category levels

When verbose is on, you can set each category to its own level:

CategoryWhat it covers
MIDIPort I/O, CC and Note sends, telemetry received from the DJ app, echoes the engine ignored
Control Surface APIsetValue/getValue calls, snapshots, role swaps
MappingAddress ↔ MIDI resolution and warnings
PlayerEra anchors, transport observations, tempo-ramp routines
SchedulerTick drift, action execution timing
ProgressAuto/manual source switches, manual takeover; at debug, the progress position and crossfader output on each tick
ActionSET/WAIT/IF step execution, validation
IPCMain↔renderer message boundaries
ControllerPad triggers, profile activation
UpdatesUpdate checks, downloads, and deferrals. See Updating Fusor Studio
UIRenderer-side diagnostic messages

Levels go from most detailed to least:

  • debug. Every operation, including high-volume per-tick activity.
  • info. Significant events such as transition start and role swap.
  • warn. Something unexpected but the app continued.
  • error. An operation failed.

Open log folder / Reveal current log file / Clear logs

  • Open log folder. Opens the logs folder in Explorer or Finder: %APPDATA%\fusor-studio\logs\ on Windows, ~/Library/Application Support/fusor-studio/logs/ on the Mac.
  • Reveal current log file. Opens Explorer or Finder with main.log pre-selected so you can right-click and attach it to an email or bug report.
  • Clear logs. Empties main.log in place. Use it right before reproducing a bug so the file contains only the relevant run: turn verbose on, click Clear logs, reproduce, then reveal and attach.

Filing a bug report

The typical workflow:

  1. Open Settings → Logging.
  2. Turn Verbose logging on.
  3. Set the relevant categories to debug. Some examples:
    • "A control change isn't reaching the DJ app" → MIDI, Control Surface API, Mapping.
    • "Transition didn't auto-start" → Player, Progress, Scheduler.
    • "An action step failed" → Action, Control Surface API.
  4. Close Settings and reproduce the problem.
  5. Open Settings again and click Reveal current log file.
  6. Attach main.log to your bug report.
  7. Turn verbose back off so the file doesn't keep growing.

The log uses plain text with one entry per line, timestamped in your local time zone, so you can also open it in any text editor and search through it yourself.


Notes

  • Fusor Studio does not upload the log file anywhere. It only writes locally.
  • There is no in-app log viewer. Open the file in a text editor to read it directly.
  • Each line is prefixed with timestamp, level, and category, so you can grep by category (for example, (midi)) when investigating.