Code examples
/
Logger example
<?php

/**
 * This example shows how to create a simple logger that will
 * log 404-errors on your website.
 */

// We use the function "register_logger" to tell tell SimpleHistory that our custom logger exists.
// We call it from inside the filter "simple_history/add_custom_logger".
add_action(
	'simple_history/add_custom_logger',
	function ( $simpleHistory ) {
		$simpleHistory->register_logger( 'FourOhFourLogger' );
	}
);

// We make sure that the SimpleLogger class exists before trying to extend it.
// This prevents error if the Simple History plugin gets inactivated.
if ( class_exists( 'SimpleLogger' ) ) {

	/**
	 * This is the class that does the main work!
	 */
	class FourOhFourLogger extends SimpleLogger {


		/**
		 * The slug is used to identify this logger in various places.
		 * We use the name of the class too keep it simple.
		 */
		public $slug = __CLASS__;

		/**
		 * Return information about this logger.
		 * Used to show info about the logger at various places.
		 */
		public function getInfo() {

			$arr_info = array(
				'name'        => __( '404 Logger', 'simple-history' ),
				'description' => __( 'Logs access to pages that result in page not found errors (error code 404)', 'simple-history' ),
				'capability'  => 'edit_pages',
				'messages'    => array(
					'page_not_found' => __( 'Got a 404-page when trying to visit "{request_uri}"', 'simple-history' ),
				),
				'labels'      => array(
					'search' => array(
						'label'   => _x( 'Pages not found (404 errors)', 'User logger: 404', 'simple-history' ),
						'options' => array(
							_x( 'Pages not found', 'User logger: 404', 'simple-history' ) => array(
								'page_not_found',
							),
						),
					), // end search
				), // end labels
			);

			return $arr_info;
		}

		/**
		 * When Simple History has loaded this logger it automagically
		 * calls a loaded() function. This is where you add your actions
		 * and other logger functionality.
		 */
		public function loaded() {

			// Call a function when WordPress finds a 404 page
			add_action( '404_template', array( $this, 'on404Template' ), 10, 1 );
		}

		/**
		 * Function that is called when WordPress finds a 404 page.
		 * It collects some info and then it logs a warning message
		 * to the log.
		 */
		public function on404Template( $template ) {

			$context = array(
				'_initiator' => SimpleLoggerLogInitiators::WEB_USER,
				'request_uri' => isset( $_SERVER['REQUEST_URI'] ) ? $_SERVER['REQUEST_URI'] : '',
				'http_referer' => isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : '',
			);

			$this->warningMessage( 'page_not_found', $context );

			return $template;
		}
	}
}// End if().