Skip to content

Release Notes

Information

Releases use the following numbering system: {major}.{minor}.{incremental}

  • major: Major refactoring or rewrite - make sure you read and test very carefully!
  • minor: Breaking change in some circumstances, or a new feature. Read carefully and make sure you understand the impact of the change.
  • incremental: A "safe" change / improvement. Should always be safe to upgrade.

  • [BC]: Items marked with [BC] indicate a breaking change that will require updates to your code if you are using that code in your extension.

Release 1.3.1 (2026-10-19)

  • Fixed the log opening on an old file by default. A change of site key, base URL or database connection gives the log a new name and leaves the old file behind looking current; the most recently written one is now chosen.

Release 1.3.0 (2026-09-21)

  • Previous and Next now step through the search that found the entry, not through the file. A button appears only when there is a matching entry that way; Previous is always older and Next always newer, however the table is sorted.
  • A search with a date range starts reading at the range instead of at the end of the file. On a 269MB log, a newest-first page within a nine hour window went from 10 seconds to 3 milliseconds.
  • The result count is shown above the table as well as below.
  • The Log File dropdown is ordered by the date each file starts, newest first, rather than by rotation order.
  • Fixed filters the reader could not apply being dropped rather than applied the slow way: an unreadable date bound returned entries unfiltered by date, and an empty Severity or Log File selection returned every entry instead of none.
  • Fixed sorting by Size returning the entries in file order.
  • DebugLogEntry.get gains a startAfter parameter: an entry id the scan resumes just past, with the direction taken from orderBy.

Release 1.2.0 (2026-09-09)

  • Added a Refresh button, so a log that is still being written to can be re-read without reloading the page and losing the filters. It reports when the list was last loaded.
  • The log can be checked for new entries every few seconds, which is off by default. The button then reports how much has been written since the list was loaded, or replaces the list by itself if you ask it to. A check stats the log files rather than searching them, and is skipped while the tab is in the background. The list is never replaced automatically once a search has been measured at over two seconds, since a text search reads the whole file; switching the setting off and on again discards that measurement.
  • Added a DebugLogEntry.getFiles API action, listing the log files available to search with their size and modification time.
  • Fixed the "Back to Log" button vanishing from an entry opened by url. Viewing an entry in the popup left its snippet parameter in the session, after which every direct visit was treated as a popup. A url with no entry id likewise showed the entry last viewed rather than reporting the missing id.
  • Dropped the two bundled mixin polyfills, which only mattered on CiviCRM versions below the declared 6.17 minimum, and moved off the deprecated smarty-v2 mixin to smarty. Core documents the two as identical.

Release 1.1.0 (2026-09-08)

  • Log entries can be selected and downloaded as a spreadsheet, using SearchKit's "Download Spreadsheet" task. Selections spanning more than one log file are supported.
  • Added a "Download Log File" button, which fetches the whole raw file for whichever log the filter has selected.
  • Viewing an entry now opens it over the list rather than navigating away, so the filters you had applied are still there when you close it.
  • An unlimited request is refused past 50,000 entries rather than exhausting memory, and the spreadsheet download requires entries to be selected. Both were reachable from the interface on a large log.
  • Fixed a fatal error when opening the form on CiviCRM 6.16, below the declared minimum: input_attrs is now declared on every field rather than relying on a guard added in 6.17.
  • Added CI: coding standards, PHP compatibility and the unit tests run on every push and merge request.

Release 1.0.0 (2026-09-07)

First release.

  • Search the full text of log entries, stack traces included, so you can find the class or file named in a backtrace and not only in the message line.
  • Filter by date range and by severity.
  • Open rotated log files as well as the one currently being written to.
  • Log files are read as a stream and never loaded into memory whole, so the page opens immediately whatever the file size.
  • Exposes log entries as the DebugLogEntry APIv4 entity, so you can build your own SearchKit searches and displays over your logs.

Requires CiviCRM 6.17+, SearchKit and Afform.

Inspired by ca.civicrm.logviewer by Alan Dixon, which established the idea and whose routes this follows. The implementation is new.