BoxLang š A New JVM Dynamic Language Learn More...
A lightweight, drop-in JDBC query monitoring dashboard for ColdBox applications. Captures query history, execution times, errors, and slow queries in an in-memory ring buffer with a Vue+Quasar web UI.
box install jdbcMonitor
Add to your Application.cfc to capture all native
queryExecute() calls with full parameter values:
// Application.cfc ā runs before ColdBox boots, so use a relative path
this.query.listener = new modules.jdbcMonitor.models.providers.LuceeQueryListener();
// If installed to modules_app/:
// this.query.listener = new modules_app.jdbcMonitor.models.providers.LuceeQueryListener();
Without this, the module still captures all QB queries via ColdBox interceptors.
The QB interceptor works on BoxLang out of the box. Native query capture will be added when BoxLang exposes query interception events.
Navigate to /jdbcMonitor in your ColdBox app. Monitoring
enables automatically when you open the dashboard and auto-disables
after 15 minutes of inactivity.
| Query Source | Lucee | BoxLang | ACF |
|---|---|---|---|
| QB queries (bindings + caller) | Yes | Yes | Yes |
Native queryExecute() with params | Yes | Planned | No |
<cfquery> tag | Yes | Planned | No |
| Raw JDBC / ORM | No | No | No |
Override defaults in your ColdBox config (config/ColdBox.cfc):
moduleSettings = {
jdbcMonitor: {
enabled: false, // starts disabled, dashboard enables it
provider: "auto", // "auto", "lucee", "boxlang", "qb"
historySize: 300, // ring buffer capacity
slowQueryThreshold: 2000, // ms
maxSQLLength: 10000, // truncate stored SQL beyond this
maxBindingValueLength: 500, // truncate individual binding values
excludeDatasources: [], // datasource names to ignore
excludePatterns: [], // SQL text patterns to exclude
injectSourceComments: false // prepend /* caller:file: line */ to SQL
}
};
ConcurrentLinkedDeque) with zero memory leaks.
Auto-disables after 15 min of inactivity for zero overhead when idle.queryExecute() and <cfquery> calls
with full parameter values via the query listener API.:paramName) and positional params (?) are
interpolated with actual binding values. One-click copy to clipboard
for SSMS-ready SQL.# Install dependencies
box install
# Start dev server
box server start
# Run tests
box testbox run
MIT
$
box install jdbcMonitor