=== JS Error Logger === Contributors: jfgmedia Donate link: https://paypal.me/jfgui Tags: dashboard widget, error reporting, debug, javascript, js Requires at least: 5.0 Tested up to: 7.0 Stable tag: 1.4 Requires PHP: 7.4 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Logs front-end javascript errors, and displays them in a dashboard widget == Description == The plugin catches most JS errors, logs them, and displays them in a dashboard widget. Here are some of its features: = Developer hooks and filters = The plugin cleans the log every 24 hours, to only keep the last 100 entries. You may use the "jserrlog_max_log_entries" WP filter to enable more or less entries, by returning an integer: `add_filter('jserrlog_max_log_entries',function(){return 200;})` Alter error data: You may use the "jserrlog_pre_insert_error" WP filter to modify the error data before it's inserted into the log file: `add_filter('jserrlog_pre_insert_error',function($error_data){return $error_data;})` Trigger integrations: You may use the "jserrlog_after_log" WP hook to trigger an action (Slack notification, etc.) after an error was logged: `add_action('jserrlog_after_log',function($error_data){//do something})` Backup old errors: You may use the "jserrlog_before_log_maintenance" WP hook to trigger an action (archive errors, etc.) before old errors are deleted: `add_action('jserrlog_before_log_maintenance',function($errors){//do something})` Request hardening: You may use the "jserrlog_enforce_same_host_origin" WP filter to require same-host Origin/Referer checks for logging requests (default true): `add_filter('jserrlog_enforce_same_host_origin',function(){return true;})` You may use the "jserrlog_rate_limit_requests" and "jserrlog_rate_limit_window" WP filters to control request throttling (defaults: 60 requests per 60 seconds): `add_filter('jserrlog_rate_limit_requests',function(){return 120;}); add_filter('jserrlog_rate_limit_window',function(){return 60;});` You may use the "jserrlog_max_payload_bytes", "jserrlog_max_batch_errors" and "jserrlog_max_error_field_length" WP filters to limit incoming payload sizes (defaults: 16384 bytes, 20 errors per batch, 512 chars per field): `add_filter('jserrlog_max_payload_bytes',function(){return 32768;});` You may use the "jserrlog_duplicate_window" WP filter to suppress duplicate errors for a short period (default: 60 seconds): `add_filter('jserrlog_duplicate_window',function(){return 30;});` = Multisite = The plugin works with multisite. There's one error log per site. == Installation == 1. Visit the Plugins page within your dashboard and select "Add New" 2. Search for "JS Error Logger" 3. Click "Install" == Screenshots == 1. The JS Error Logger dashboard widget 2. The full error log from within the plugin settings 3. Some of the settings == Upgrade Notice == Not available at the moment == Changelog == = 1.4 = * Tested up to WordPress 7.0 * Prioritized navigator.sendBeacon for delayed ajax sending * Added request hardening controls (same-host origin check, rate limiting, payload limits, duplicate suppression) with WP filters * Fixed log directory path to use uploads base directory for stable storage across months * Added legacy log migration from previous date-based log directory * Improved log writes with append + lock strategy and fallback to reduce race conditions * Removed log maintenance from settings page render; maintenance now runs on its scheduled hook only * Cleared scheduled cleanup hook on plugin deactivation instead of just deletion * Updated the default accent color for WordPress 7.0+ from #2271b1 to #3858e9 * Accessibility improvements = 1.3.1 = * Tested up to Wordpress 6.9 * Renamed some template variables to ensure they can't be mistaken for global variables * Changed some native PHP functions such as mk_dir, rm_dir, fopen, etc... to use WP_Filesystem = 1.3 = * Dropped support for PHP<7.4 * Added links to our other plugins in the settings area * Addition of an admin notice * Addition of 2 developer hooks and 1 filter = 1.2 = * Accessibility improvements * Fix: Make sure the mu-plugin is also deleted when deactivating the plugin, and not just when uninstalling it * Added 3 more settings to the UI that were previously only accessible through WP filters = 1.1.11 = * Fix: Properly dequeue the early loaded script in the front-end, if js error logging is not enabled = 1.1.10 = * Security hardening * Documentation of variables for the translators * Minor Fix: Ensure the mu-plugins directory is writable before creating the early loader, to avoid PHP warnings = 1.1.9 = * Fix: Properly dequeue the early loaded script in admin, if back end logging is not enabled = 1.1.7 = * Improvement: better update mechanism to make sure the mu-plugin also gets updated = 1.1.6 = * New: it is now possible to also log back end js errors = 1.1.5 = * Fix: An HTML attribute was escaped with wp_kses instead of esc_attr, which could lead to some display issues if double quotes were in the attribute text = 1.1.4 = * Fix: When the dashboard widget was initially empty, then refreshed, and an error was there, the "View" button was not clickable = 1.1.3 = * Fix: A change in the ID of the dashboard widget was preventing the "Refresh log" button from working properly = 1.1.2 = * Fix: Removed the "string" return type on rewrite_script_src to prevent potential issues = 1.1.1 = * Fix: issue with special character encoding * Fix: Missing trailing slash during the creation of the "js-error-logger-log" directory * Improvement: Plugin should detect the most popular caching plugins, and remind users to clear their cache after changing some settings = 1.0 = * Initial Release