Git Product home page Git Product logo

wp-rest-api-log's Introduction

REST API Log

Contributors: gungeekatx
Tags: wp rest api, rest api, wp api, api, json, json api, log, logging, elasticpress, elasticsearch
Donate link: https://github.com/petenelson/wp-rest-api-log
Requires at least: 4.7
Tested up to: 6.2
Stable tag: 1.7.0
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html

Code Climate Travis CI

WordPress plugin to log REST API requests and responses

Description

WordPress plugin to log REST API requests and responses (for v2 of the API).

Includes:

  • WordPress admin page to view and search log entries
  • API endpoint to access log entries via JSON
  • Filters to customize logging
  • Custom endpoint logging
  • ElasticPress logging

Find us on GitHub!

Roadmap

  • Better search capabilities for log entries via the REST API endpoint

Installation

  1. Upload the wp-rest-api-log directory to the /wp-content/plugins/ directory
  2. Activate the plugin through the 'Plugins' menu in WordPress
  3. Go to Settings -> REST API Log to enable or disable logging
  4. Go to Tools -> REST API Log to start viewing log entries

Changelog

v1.7.0 May 8, 2023

  • Fixed bugs related to Method and Status filtering.
  • Removed deprecated FILTER_SANITIZE_STRING calls.
  • Updated highlight.js version
  • Updated clipboard.js version

v1.6.9 September 9, 2022

  • Updated highlight.js version
  • Updated clipboard.js version

v1.6.8 October 30, 2020

  • Updated the Purge All Entries functionality in the admin to purge batches of 25 at a time.
  • Updated CLI purge command with a progress bar.
  • Fixed ClipboardJS error (props itowhid06)

v1.6.7 March 31, 2019

  • Added admin notice about running the plugin on a production server
  • Set the default purge days to 7
  • Updated clipboard.js version

v1.6.6 November 9, 2018

  • Moved taxonomy registration to a separate file, made taxonomies not public to prevent them from automatically showing in Yoast SEO sitemaps
  • Updated highlight.js version
  • Updated minimum WP version to 4.7
  • Updated unit test framework

v1.6.5 July 26, 2017

  • Fixed some escaping issues in admin and new-line characters when saving to database (props davidanderson)
  • Updated highlight.js and clipboard.js versions

v1.6.4 May 26, 2017

  • Fixed an issue with the URL in the settings tabs (props davidanderson)

v1.6.3 March 28, 2017

  • Updated logging for multidimensional query parameters (props mnelson4)

v1.6.2 March 10, 2017

  • Fixed bug in HTTPS download URLs.
  • Fixed bug in download URL permissions.

v1.6.0 March 9, 2017

  • Added ability to download request and response fields as JSON files, as well as copy to clipboard.
  • Added button on settings page to Purge All Log Entries.
  • Tweaked some of the ElasticPress routes that skip logging.

v1.5.2 February 21, 2017

  • Fixed a bug with ElasticPress logging getting stuck in a loop regarding the _nodes/plugins URL.

v1.5.1 February 15, 2017

  • Removed hidden custom taxonomies from the navigation menu admin (props phh for the pull request).

v1.5.0 February 2, 2017

  • Added logging for the user making the request (props drsdre for the pull request).
  • Added Settings and Log links from the Plugins page.
  • Updated term fetching when viewing log entries for fewer database queries and better performance.
  • Updated highlight.js to 9.9.0

v1.4.0 January 23, 2017

  • Added the ability to filter routes for logging, either include or exclude specific routes.

v1.3.0 December 5, 2016

  • Added support for logging HTTP_X_FORWARDED_FOR, useful for servers behind a proxy or load balancer.
  • Changed plugin name to REST API Log
  • Changed the wp-rest-api-log post type 'public' setting to false to prevent it from showing up in searches.
  • Updated Highlight JS version to 9.7.0
  • Updated the internal process for granting administrator role access to the custom post type
  • Bug fix: Header values with colons were not being stored correctly.
  • Bug fix: Use proper HTML escaping when viewing log entries.

v1.2.0 July 6, 2016

  • Added support for ElasticPress logging
  • Fixed undefined constant error on Help page (props vinigarcia87)

v1.1.1 May 15, 2016

  • Fixed error during activation (props pavelevap)

v1.1.0 April 28, 2016

  • Added cron job to cleanup old log entries
  • Added setting to exclude the WP core /oembed API endpoint
  • Don't diplay log entries in the Insert Link modal

v1.0.0-beta2 April 10, 2016

  • Switched from custom tables to built-in WordPress tables using a custom post type (wp-rest-api-log)
  • Method, status, and source are now tracked using taxonomies
  • Viewing log entries now uses the standard WordPress admin UI, includes filters for method, status, and source
  • Added admin settings with the option to enable or disable logging
  • Added WP-CLI support: wp rest-api-log
  • Added .pot file to support translations

NOTE: if you are upgrading from the previous version, you can run the "wp rest-api-log migrate" WP-CLI command to migrate your existing logs into the new custom post type

v1.0.0-beta1 July 9, 2015

  • Initial release

Upgrade Notice

v1.7.0 May 8, 2023

  • Fixed bugs related to Method and Status filtering.
  • Removed deprecated FILTER_SANITIZE_STRING calls.
  • Updated highlight.js version
  • Updated clipboard.js version

Frequently Asked Questions

How do I use ElasticPress logging?

ElasticPress is a plugin than interfaces WordPress to the ElasticSearch search service. Because ElasticSearch has its own REST API for indexing and searching data, it was a natural fit to extend logging support via this REST API Logging plugin.

You can go into Settings > ElasticPress to enable logging for requests & responses. You can also disable REST API logging if you only need ElasticPress logging.

Screenshots

1. Sample list of log entries

Sample list of log entries

2. Sample log entry details

Sample log entry details

wp-rest-api-log's People

Contributors

dependabot[bot] avatar drsdre avatar itowhid06 avatar petenelson avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wp-rest-api-log's Issues

Use custom post type instead of custom tables

cpt: wp-rest-ap-log
post_content = response body
post_title = route

taxonomies: method, direction (inbound/outbound)

figure out how to store headers, request params, etc as postmeta
example: request_header_key( md5hash('Access-Control-Allow-Methods') ) = 'Access-Control-Allow-Methods'

request_header_value( md5hash( 'Access-Control-Allow-Methods' ) ) = 'POST, GET, OPTIONS, PUT, DELETE'

would look like this in the db
_request_header_key_2381c10b4921512b4f1c709dda92a425: Access-Control-Allow-Methods
_request_header_value_2381c10b4921512b4f1c709dda92a425: POST, GET, OPTIONS, PUT, DELETE

would allow easy querying by key, but still give the ability to return all keys names by going through all meta keys starting with 'request_header_key'

Refactor DELETE route

We'll have to make a specific url-based route for time-based deletes since we can't pass variables in the $_REQUEST superglobal

No headers visible

Hi!
I just started using this plugin and everything seems to work fine but I can't see any headers information within logs. Is there something I'm missing?

Fatal error during activation

Hi, great idea for a plugin, but I was not able to activate it :-(

Fatal error: Uncaught Error: Call to undefined method WP_REST_API_Log_Settings::create_default_settings() in /wp-content/plugins/wp-rest-api-log/includes/class-wp-rest-api-log-activator.php:11

Stack trace:
#0 /wp-content/plugins/wp-rest-api-log/wp-rest-api-log.php(96): WP_REST_API_Log_Activator::activate()
#1 /wp-includes/plugin.php(525): {closure}('')
#2 /wp-admin/plugins.php(166): do_action('activate_wp-res...')
#3 {main} thrown in /wp-content/plugins/wp-rest-api-log/includes/class-wp-rest-api-log-activator.php on line 11

Taxonomy to flag source of log entry

Defaults to REST API, but since we have the ability to log request/response from other sources via an action, we need to add a parameter to the action to accept a source of the log entry.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.