Skip to content

Print Log

The Print Log provides a chronological table of all print activity across your printers, giving you a quick at-a-glance history of every print.


Overview

The Print Log is a dedicated view mode within the Archives page that focuses on print activity as a flat, filterable table. Unlike the standard archive views (grid, list, calendar), the Print Log shows one row per print event with key details at a glance.

Accessing the Print Log

  1. Go to the Archives page
  2. Click the Print Log button in the header toolbar (next to the grid/list/calendar view toggles)

Table Columns

Each row in the Print Log represents a single print event:

Column Description
Date/Time When the print completed
Print Name Name of the print (with thumbnail)
Printer Which printer ran the job
User Username who started the print (when authentication is enabled)
Status Result badge (color-coded), with the failure-cause classification shown underneath when set
Duration Total print time
Filament Material type and color indicator
Filament Used How much filament this run consumed, in grams
Actions Per-row edit and delete buttons (see Per-row actions)

Four more columns are available but hidden by default — switch them on with Choosing columns:

Column Description
Finished When the print ended, as opposed to the Date/Time column's start
Cost Filament cost for this run, in your configured currency
Energy Power drawn during the run, in kWh. Needs a smart plug
Energy Cost What that power cost

These are per-run figures, not the archive's

Filament Used and Cost are measured for this print, not copied from the file's estimate: a print that failed part-way is scaled to the progress it reached, tracked spools are preferred over estimates, and a multi-plate project dispatched one plate at a time counts only the plate that ran. That is why a row can differ from the filament figure on the archive card, which is the whole file's total.

Energy and Energy Cost are written by a background task shortly after the print ends, so a run that just finished shows — for a moment before the measurement lands.

Sorting

Click any column header to sort the log by it, and click again to reverse. Dates, durations and amounts open on largest-first; text columns open A–Z. The arrow in the header shows which column is active and which way it runs, and your choice is remembered for next time.

Sorting applies to the whole log, not the page you are looking at — asking for the most expensive print returns the most expensive print, not the most expensive one of the 25 rows currently on screen. Changing the sort returns you to page 1.

Rows with nothing in the sorted column always come last, in both directions, so sorting by Cost or Energy never opens on a screenful of blanks.

Choosing columns

Click Columns above the table to pick which of the columns above appear, and in what order. Drag a row (or use the arrows) to reorder, and the eye icon to show or hide.

The choice is stored in your browser, so it is per-device rather than per-account — a second person using the same Bambuddy keeps their own layout, and clearing site data resets it. Reset in the picker restores the defaults.

Status Badges

Status Color Description
Completed Green Print finished successfully
Failed Red Print encountered an error
Stopped Orange Print was manually stopped
Cancelled Grey Print was cancelled before finishing
Skipped Purple Print was skipped in the queue

Filtering

Narrow down log entries using the filter controls at the top of the table:

Filter Description
Search Free-text search across print names
Printer Show entries from a specific printer
User Show entries from a specific user
Status Filter by result (completed, failed, stopped, cancelled, skipped)
Date From Show entries from this date onward
Date To Show entries up to this date

Combining Filters

All filters can be combined. For example, show only failed prints from "Workshop X1C" in the last week by selecting the printer, status, and date range together.


Pagination

The Print Log supports configurable pagination for navigating large histories:

Setting Options
Rows per page 10, 25, 50, or 100
Navigation Previous / Next page buttons

The current page range and total entry count are displayed alongside the navigation controls.


Per-row actions

Every row in the Print Log has two action buttons on the right:

Edit (classification)

Click the pencil icon to classify the print run -- set or change the failure cause and status on a single entry.

Field Values
Status Completed, Failed, Stopped, Cancelled, Skipped
Failure cause Adhesion failure, Spaghetti / Detached, Layer shift, Clogged nozzle, Filament runout, Warping, Stringing, Under-extrusion, Power failure, User cancelled, Other

The classification you pick here is what the Failure Analysis widget groups by, so updates flow into the dashboard charts immediately.

Works on orphan entries too

If a print failed before any archive was created (for example, a dispatch error or a manual log entry), there is no archive to edit through -- the Print Log row editor is the only way to classify those runs.

Delete (single row)

Click the trash icon to remove a single entry from the log. The entry's filament, time, and cost contributions drop out of Quick Stats in the same response cycle. The matching archive (if any) is not affected -- the log row is independent of the archive.

Permission gating

Both buttons honour the same ownership shape as archive edits. With ARCHIVES_UPDATE_OWN / ARCHIVES_DELETE_OWN you can only act on entries you created; ARCHIVES_UPDATE_ALL / ARCHIVES_DELETE_ALL see every entry.


Clearing the Log

The Clear button removes all log entries from the database.

Permanent Action

Clearing the log permanently deletes all log entries. This action cannot be undone.

Archives Are Not Affected

The Print Log is stored independently from your archives and print queue. Clearing the log only removes log entries -- your archived 3MF files, metadata, and queue history remain untouched.


How It Works

Automatic Logging

Log entries are written automatically whenever a print completes. No configuration is required -- once archiving is active, print events are recorded in the log.

Independent Storage

The Print Log uses its own database table (print_log_entries), separate from the archives table. This means:

  • Log entries exist independently of archives
  • Deleting an archive does not remove its log entry
  • Clearing the log does not affect archives
  • The log stays reachable with no archives at all — purging every archive leaves the log and its history intact
  • The log is lightweight and optimized for fast querying

Permissions

When authentication is enabled, the Print Log respects the following permissions:

Action Required Permission
View the Print Log ARCHIVES_READ
Edit classification on a row you own ARCHIVES_UPDATE_OWN
Edit classification on any row ARCHIVES_UPDATE_ALL
Delete a single row you own ARCHIVES_DELETE_OWN
Delete any single row ARCHIVES_DELETE_ALL
Clear all log entries ARCHIVES_DELETE_ALL

API Access

List Log Entries

GET /api/v1/print-log/

Query Parameters:

Parameter Type Description
search string Search print names
printer_id integer Filter by printer ID
created_by_username string Filter by username
status string Filter by status (completed, failed, stopped, cancelled, skipped)
date_from datetime Start of date range
date_to datetime End of date range
limit integer Number of entries per page (default 25)
offset integer Pagination offset
sort_by string Column to order by (default date). One of date, print_name, printer, user, status, duration, completed_at, filament, filament_used, cost, energy, energy_cost. Anything else returns 400
sort_dir string asc or desc (default desc). Rows with no value in the sorted column come last either way

Example:

curl -H "X-API-Key: your-key" \
  "http://localhost:8000/api/v1/print-log/?status=failed&limit=10"

Update a Single Entry

PATCH /api/v1/print-log/{entry_id}

Edit the classification (failure cause and/or status) on one entry. Requires ARCHIVES_UPDATE_OWN for entries you created, or ARCHIVES_UPDATE_ALL for any entry.

Request body:

{
  "failure_reason": "cloggedNozzle",
  "status": "failed"
}

Both fields are optional. To clear an existing classification send "failure_reason": "".

Field Valid values
failure_reason "" (clear), adhesionFailure, spaghettiDetached, layerShift, cloggedNozzle, filamentRunout, warping, stringing, underExtrusion, powerFailure, userCancelled, other
status completed, failed, stopped, cancelled, skipped

Unknown values return HTTP 400 -- the canonical vocabulary above is enforced server-side.

Example:

curl -X PATCH -H "X-API-Key: your-key" -H "Content-Type: application/json" \
  -d '{"failure_reason": "cloggedNozzle"}' \
  "http://localhost:8000/api/v1/print-log/42"

Delete a Single Entry

DELETE /api/v1/print-log/{entry_id}

Removes one entry from the log. The entry's filament, time, and cost contributions drop out of /api/v1/archives/stats on the same request cycle. The linked archive (if any) is untouched. Requires ARCHIVES_DELETE_OWN for entries you created, or ARCHIVES_DELETE_ALL for any entry.

Example:

curl -X DELETE -H "X-API-Key: your-key" \
  "http://localhost:8000/api/v1/print-log/42"

Clear All Log Entries

DELETE /api/v1/print-log/

Removes all log entries. Requires ARCHIVES_DELETE_ALL permission.

Example:

curl -X DELETE -H "X-API-Key: your-key" \
  "http://localhost:8000/api/v1/print-log/"

Tips

Quick Status Check

Use the status filter to quickly find all failed prints and investigate patterns.

Date Range Analysis

Set a date range to review a specific time period, such as "last week" or "this month."

Per-User Tracking

When authentication is enabled, filter by user to see each person's print activity.

Lightweight History

The Print Log loads faster than the full archive views since it only fetches tabular data without thumbnails and 3MF metadata.