JS Error Logger

描述

The plugin catches most JS errors, logs them, and displays them in a dashboard widget.

Here are some of its features:

  • Except for the plugin settings, there is no database storage involved. Log is written in a “.log” file.
  • Display latest JS errors in a dashboard widget.
  • Refresh errors from the dashboard widget.
  • See the full error log on a separate page.
  • Ignore errors if the user agent contains a specific string.
  • Ignore errors if the error contains a specific string.
  • Ignore errors if the script url contains a specific string.
  • See which page and which script triggered the errors.
  • Choose the maximum amount of errors to log per page load.
  • Exclude logging errors from specific post types.
  • Choose how ajax calls are made.

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.

屏幕截图

  • The JS Error Logger dashboard widget
  • The full error log from within the plugin settings
  • Some of the settings

安装

  1. Visit the Plugins page within your dashboard and select “Add New”
  2. Search for “JS Error Logger”
  3. Click “Install”

评价

2025 年 1 月 14 日 1 回复
My users are having an annoying issue on the frontend of my website that I cannot reproduce. It’s causing chaos, this plugin seems to be exactly what I need to get to the bottom of this!
阅读所有1条评价

贡献者及开发者

「JS Error Logger」是开源软件。 以下人员对此插件做出了贡献。

贡献者

「JS Error Logger」插件已被翻译至 1 种本地化语言。 感谢所有译者为本插件所做的贡献。

帮助将「JS Error Logger」翻译成简体中文。

对开发感兴趣吗?

您可以浏览代码,查看SVN仓库,或通过RSS订阅开发日志

更新日志

1.5

  • Added a cookie-based “new” indicator in the dashboard widget to highlight unseen errors
  • Improved the dashboard widget error display with error type labels above the message
  • Refined dashboard widget spacing and styling for a cleaner table layout

1.4.3

  • Fix: Badly scoped call to WP_FileSystem
  • Fix: Clicking on the dashboard widget “Refresh log” button was causing jQuery modals to instantiate again

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