Raygun4CFML 3.0.0 is now available on ForgeBox.
box install raygun4cfml@3.0.03.0.0 (July 21, 2026)
New Features:
- Breadcrumbs: Record a trail of events leading up to an error via
recordBreadcrumb()andclearBreadcrumbs(). Breadcrumbs are automatically included in subsequentsend()/sendAsync()calls with timestamp, level, type, category, message, className, methodName, lineNumber, and customData fields (#46). - onBeforeSend hook: Register a callback via constructor or
setOnBeforeSend()to inspect, mutate, or cancel payloads before sending. Returnfalseto cancel, return a modified struct to mutate, or throw to proceed with the original payload. - Ignore exceptions list: Skip specific exception types via
ignoreExceptionsconstructor argument orsetIgnoreExceptions(). Case-insensitive matching (e.g.["MissingInclude", "AbortException"]). - Wildcard content filter keys:
RaygunContentFilternow supports glob-style*wildcards in filter patterns (e.g."pass*"matchespassword,passphrase,passCode). Exact-match filters continue to work as before. - Payload size enforcement: Payloads exceeding 128KB are automatically reduced by progressively stripping expendable fields (rawData, userCustomData, CGI data, headers, form). Form field values are truncated to 256 characters.
- Configurable API endpoint: Set a custom Raygun API endpoint via
RaygunSettings.apiEndpoint(default:https://api.raygun.com/entries). - HTTP timeout: All API requests now have a configurable timeout via
RaygunSettings.httpTimeout(default: 10 seconds). - Automatic retry: Failed HTTP requests are retried with configurable
RaygunSettings.maxRetries(default: 2) andRaygunSettings.retryDelay(default: 1 second). SetmaxRetries=0to disable. - Additional environment fields:
processorCount,locale, andutcOffsetare now captured in every error report. - Sample API key configuration: Samples now load the Raygun API key automatically from
samples/.env.json(gitignored) or theRAYGUN_API_KEYenvironment variable — no more manual copy-paste into each file.
Bug Fixes:
- Fixed settings not propagating to RaygunRequestMessage and RaygunResponseMessage
- Fixed empty stackTrace when Java stack trace is empty but CFML tag context is available
- Fixed case-sensitive exception type checks (e.g. "database" vs "Database")
- Fixed unsafe CGI scope access in RaygunRequestMessage and RaygunMessageDetails
- Fixed sync/async HTTP error handling inconsistency in RaygunClient
- Fixed thread name typo in async sending
- Fixed typed property defaults (
default=""on non-string typed properties) - Added
isNull()guards ongetSettings()/getContentFilter()to prevent NPE on strict engines - Fixed
RaygunContentFilterinitialization on Adobe ColdFusion 2025 Update 11, where the engine's built-insetFilter()function collided with the generated property setter
Code Quality:
- Centralized all magic strings and constants in
RaygunConfig(API endpoint, log file name, content types, HTTP methods, size limits, timeout/retry defaults) - Replaced
isClosure()withisCustomFunction()for cross-engine compatibility - 174 test specs (up from 70), covering all components
- Expanded the test matrix to 20 engines, including Lucee 8 Alpha and matching Lucee Light configurations for every supported Lucee line
Full Changelog: 2.1.0...3.0.0