{"id":69291,"date":"2017-05-26T02:42:31","date_gmt":"2017-05-26T02:42:31","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/jeepers-peepers\/"},"modified":"2025-04-15T17:45:23","modified_gmt":"2025-04-15T17:45:23","slug":"jeepers-peepers","status":"publish","type":"plugin","link":"https:\/\/gl.wordpress.org\/plugins\/jeepers-peepers\/","author":10721345,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"0.5.4","stable_tag":"0.5.4","tested":"6.6.5","requires":"4.7","requires_php":"7.3","requires_plugins":null,"header_name":"Jeepers Peepers: WP Syslog","header_author":"Blobfolio, LLC","header_description":"An extensible tool for recording WordPress events to a system log.","assets_banners_color":"5b4c73","last_updated":"2025-04-15 17:45:23","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/blobfolio.com\/donate.html","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/jeepers-peepers\/","header_author_uri":"https:\/\/blobfolio.com\/","rating":5,"author_block_rating":0,"active_installs":70,"downloads":13257,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.5.1":{"tag":"0.5.1","author":"blobfolio","date":"2017-05-26 03:06:57"},"0.5.2":{"tag":"0.5.2","author":"blobfolio","date":"2018-05-18 03:03:10"},"0.5.3":{"tag":"0.5.3","author":"blobfolio","date":"2019-04-05 20:19:15"},"0.5.4":{"tag":"0.5.4","author":"blobfolio","date":"2024-09-21 18:35:28"}},"upgrade_notice":{"0.5.4":"<p>This release adds a new <code>BLOBAUDIT_LOG_UTC<\/code> configuration constant allowing sites to record events in the site&#039;s local timezone rather than UTC.<\/p>","0.5.3":"<p>This release adds network request logging and minor code optimizations.<\/p>","0.5.2":"<p>Add privacy policy hook for GDPR compliance.<\/p>","0.5.1":"<p>This is the first WP-hosted release! Woo!<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":2889645,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":2889645,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":2889645,"resolution":"1544x500","location":"assets","locale":""},"banner-772-250.png":{"filename":"banner-772-250.png","revision":2889645,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.5.1","0.5.2","0.5.3","0.5.4"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":2889645,"resolution":"1","location":"assets","locale":""}},"screenshots":{"1":"Example log file."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[49509,141605,600,9231,141604],"plugin_category":[54],"plugin_contributors":[81811],"plugin_business_model":[],"class_list":["post-69291","plugin","type-plugin","status-publish","hentry","plugin_tags-audit-trail","plugin_tags-event-log","plugin_tags-security","plugin_tags-syslog","plugin_tags-system-log","plugin_category-security-and-spam-protection","plugin_contributors-blobfolio","plugin_committers-blobfolio"],"banners":{"banner":"https:\/\/ps.w.org\/jeepers-peepers\/assets\/banner-772-250.png?rev=2889645","banner_2x":"https:\/\/ps.w.org\/jeepers-peepers\/assets\/banner-1544x500.png?rev=2889645","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/jeepers-peepers\/assets\/icon-128x128.png?rev=2889645","icon_2x":"https:\/\/ps.w.org\/jeepers-peepers\/assets\/icon-256x256.png?rev=2889645","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/jeepers-peepers\/assets\/screenshot-1.png?rev=2889645","caption":"Example log file."}],"raw_content":"<!--section=description-->\n<p>Jeepers Peepers provides an extensible interface for recording WordPress events \u2014 user logins, file uploads, post deletions, etc. \u2014 to a standard system log.<\/p>\n\n<p>The resulting audit trail can then be incorporated into powerful log-monitoring tools like <a href=\"https:\/\/ossec.github.io\/\">OSSEC<\/a> for pre-emptive protection and, in the unfortunate event of a hack, used as a vital reference in the post-mortem investigation.<\/p>\n\n<p>The following events are automatically logged:<\/p>\n\n<ul>\n<li>Content: <code>wp_die()<\/code> triggered;<\/li>\n<li>Content: attachment deleted;<\/li>\n<li>Content: attachment sideloaded;<\/li>\n<li>Content: attachment uploaded;<\/li>\n<li>Content: post deleted;<\/li>\n<li>Content: post published; <\/li>\n<li>Network: GET, HEAD, POST, etc., requests;<\/li>\n<li>Plugin: activated;<\/li>\n<li>Plugin: deactivated;<\/li>\n<li>Plugin: upgraded;<\/li>\n<li>User: deleted;<\/li>\n<li>User: login banned (via <a href=\"https:\/\/wordpress.org\/plugins\/apocalypse-meow\/\">Apocalypse Meow<\/a>);<\/li>\n<li>User: login failed;<\/li>\n<li>User: login succeeded;<\/li>\n<li>User: new user;<\/li>\n<li>User: password reset;<\/li>\n<\/ul>\n\n<p>Each log entry records:<\/p>\n\n<ul>\n<li>UTC timestamp;<\/li>\n<li>Severity level;<\/li>\n<li>User IP address (or <code>127.0.0.1<\/code> if automated);<\/li>\n<li>Logged in username (if applicable);<\/li>\n<li>Event message;<\/li>\n<\/ul>\n\n<p>It will look something like this:<\/p>\n\n<pre><code>WordPressAudit 2017-05-24 16:35:45 [warning] yourdomain.com 68.256.55.123 \"tiffany\" \"Deactivated plugin: look-see-security-scanner\"\n<\/code><\/pre>\n\n<h3>Requirements<\/h3>\n\n<ul>\n<li>WordPress 4.7 or later.<\/li>\n<li>PHP 7.3 or later.<\/li>\n<li>Linux host.<\/li>\n<li>Single-site instance.<\/li>\n<li>Log file must be writeable by WordPress.<\/li>\n<\/ul>\n\n<p>Please note: it is <strong>not safe<\/strong> to run WordPress atop a version of PHP that has reached its <a href=\"http:\/\/php.net\/supported-versions.php\">End of Life<\/a>. Future releases of this plugin might, out of necessity, drop support for old, unmaintained versions of PHP. To ensure you continue to receive plugin updates, bug fixes, and new features, just make sure PHP is kept up-to-date. :)<\/p>\n\n<h3>Privacy Policy<\/h3>\n\n<p>Jeepers Peepers records CMS events such as post and plugin changes to a standard system log for security and audit purposes. Where possible, these entries include the public IP address and\/or WordPress username of the individual responsible.<\/p>\n\n<p>This plugin does not send any of this information to remote locations or third parties.<\/p>\n\n<p>Please note: Jeepers Peepers <em>DOES NOT<\/em> integrate with any WordPress GDPR \"Personal Data\" features. (Selective erasure of audit logs would undermine the very purpose of this plugin! Haha.)<\/p>\n\n<!--section=installation-->\n<p>Nothing fancy!  You can use the built-in installer on the Plugins page or extract and upload the <code>jeepers-peepers<\/code> folder to your plugins directory via FTP.<\/p>\n\n<p>To install this plugin as <a href=\"https:\/\/codex.wordpress.org\/Must_Use_Plugins\">Must-Use<\/a>, download, extract, and upload the <code>jeepers-peepers<\/code> folder to your mu-plugins directory via FTP. Please note: MU Plugins are removed from the usual update-checking process, so you will need to handle future updates manually.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id='is%20this%20compatible%20with%20multi-site%3F'><h3>Is this compatible with Multi-Site?<\/h3><\/dt>\n<dd><p>Sorry, no. This plugin can only be added to standard (single-site) WordPress installations.<\/p><\/dd>\n<dt id='the%20log%20isn%27t%20updating...'><h3>The log isn't updating...<\/h3><\/dt>\n<dd><ol>\n<li>Make sure the log file exists. The default location is <code>\/var\/log\/wordpress\/{YOUR_SITE_DOMAIN}.log<\/code>, but this can be overridden by defining a constant in your <code>wp-config.php<\/code> file (see the relevant FAQ section below).<\/li>\n<li>Make sure WordPress\/PHP can reach the file. For PHP sites with <code>open_basedir<\/code> restrictions, this means whitelisting the path to the log file. If the hosting environment is chrooted or jailed, the log location will need to be within the same boundaries.<\/li>\n<li>Make sure the log file's ownership\/permissions allow PHP to write changes to it. This varies by environment, but a good place to start is assigning the same owner:group to the log file used by your WordPress files.<\/li>\n<\/ol><\/dd>\n<dt id='does%20this%20require%20any%20theme%20or%20config%20changes%3F'><h3>Does this require any theme or config changes?<\/h3><\/dt>\n<dd><p>By default, the log is written to <code>\/var\/log\/wordpress\/{YOUR_SITE_DOMAIN}.log<\/code>. If this path exists and works for you, then no, logging will happen without any intervention.<\/p>\n\n<p>To modify the default behavior, you will need to define a couple constants in your <code>wp-config.php<\/code> file. See the relevant FAQ section below.<\/p><\/dd>\n<dt id='list%20of%20configuration%20constants'><h3>List of configuration constants<\/h3><\/dt>\n<dd><p>The following constants can be defined in your <code>wp-config.php<\/code> file to override the default behaviors.<\/p>\n\n<ul>\n<li>(<em>string<\/em>) <strong>BLOBAUDIT_SITE_URL<\/strong> Your site's domain, for logging purposes. By default, this will be your site's domain name, lowercased, and without a leading <code>www.<\/code> subdomain.<\/li>\n<li>(<em>string<\/em>) <strong>BLOBAUDIT_LOG_PATH<\/strong> The absolute path to the log file. Default: <code>\/var\/log\/wordpress\/{YOUR_SITE_DOMAIN}.log<\/code><\/li>\n<li>(<em>bool<\/em>) <strong>BLOBAUDIT_LOG_UTC<\/strong> Record datetimes in UTC rather than the site's timezone. Default: <code>true<\/code><\/li>\n<\/ul>\n\n<p>When using a custom log location, please choose one that is outside the web root. You don't want just anybody looking at it. :)<\/p><\/dd>\n<dt id='logging%20custom%20events'><h3>Logging custom events<\/h3><\/dt>\n<dd><p>The plugin includes action callbacks you can trigger in your code to record a custom event.<\/p>\n\n<pre><code>\/\/ In order of severity...\ndo_action('syslog_debug', $message, $internal);\ndo_action('syslog_notice', $message, $internal);\ndo_action('syslog_info', $message, $internal);\ndo_action('syslog_warning', $message, $internal);\ndo_action('syslog_error', $message, $internal);\ndo_action('syslog_critical', $message, $internal);\n<\/code><\/pre>\n\n<p>All actions accept the following:<\/p>\n\n<ul>\n<li>(<em>string<\/em>) <strong>$message<\/strong> The event message.<\/li>\n<li>(<em>bool<\/em>) (<em>optional<\/em>) <strong>$internal<\/strong> Prefix the severity with an <code>@<\/code> to mark it as \"internal\". Default: <code>FALSE<\/code><\/li>\n<\/ul><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.5.4<\/h4>\n\n<ul>\n<li>[New] <code>BLOBAUDIT_LOG_UTC<\/code> constant for toggling between UTC\/site-time for event dates.<\/li>\n<\/ul>\n\n<h4>0.5.3<\/h4>\n\n<ul>\n<li>[New] Log network requests.<\/li>\n<li>[Improve] Minor code optimizations.<\/li>\n<\/ul>\n\n<h4>0.5.2<\/h4>\n\n<ul>\n<li>[New] Add privacy policy hook for GDPR compliance.<\/li>\n<\/ul>\n\n<h4>0.5.1<\/h4>\n\n<ul>\n<li>[New] Initial launch!<\/li>\n<\/ul>","raw_excerpt":"An extensible tool for recording WordPress events to a system log.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/69291","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=69291"}],"author":[{"embeddable":true,"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/blobfolio"}],"wp:attachment":[{"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=69291"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=69291"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=69291"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=69291"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=69291"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=69291"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}