first commit
This commit is contained in:
223
wp-content/plugins/brizy/logger.php
Normal file
223
wp-content/plugins/brizy/logger.php
Normal file
@@ -0,0 +1,223 @@
|
||||
<?php
|
||||
|
||||
class Brizy_Logger {
|
||||
|
||||
const EMERGENCY_LOG = 'EMERGENCY';
|
||||
const ALERT_LOG = 'ALERT';
|
||||
const CRITICAL_LOG = 'CRITICAL';
|
||||
const ERROR_LOG = 'ERROR';
|
||||
const WARNING_LOG = 'WARNING';
|
||||
const NOTICE_LOG = 'NOTICE';
|
||||
const INFO_LOG = 'INFO';
|
||||
const DEBUG_LOG = 'DEBUG';
|
||||
|
||||
/**
|
||||
* @var self
|
||||
*/
|
||||
static protected $instance = null;
|
||||
|
||||
/**
|
||||
* Get logger instance.
|
||||
*/
|
||||
static public function instance() {
|
||||
|
||||
if ( self::$instance ) {
|
||||
return self::$instance;
|
||||
}
|
||||
|
||||
return self::$instance = new self();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create logger table.
|
||||
*/
|
||||
static public function install() {
|
||||
|
||||
global $wpdb;
|
||||
|
||||
$tableName = "{$wpdb->prefix}brizy_logs";
|
||||
|
||||
if ( ! function_exists( 'maybe_create_table' ) ) {
|
||||
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
|
||||
}
|
||||
|
||||
$create_table_query = "
|
||||
CREATE TABLE {$tableName} (
|
||||
`id` bigint PRIMARY KEY AUTO_INCREMENT,
|
||||
`type` text NOT NULL,
|
||||
`message` text NOT NULL,
|
||||
`context` text NOT NULL,
|
||||
`session_id` text NOT NULL,
|
||||
`date` datetime NOT NULL
|
||||
) DEFAULT CHARSET=utf8;";
|
||||
|
||||
maybe_create_table( $tableName, $create_table_query );
|
||||
|
||||
self::clean();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create logger table.
|
||||
*/
|
||||
static public function clean() {
|
||||
|
||||
global $wpdb;
|
||||
$wpdb->query( "TRUNCATE `{$wpdb->prefix}brizy_logs`" );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $type
|
||||
* @param $message
|
||||
* @param array $context
|
||||
*/
|
||||
private function write_log( $type, $message, $context = array() ) {
|
||||
global $wpdb;
|
||||
|
||||
if ( ! BRIZY_LOG && ! in_array( $type, [
|
||||
self::EMERGENCY_LOG,
|
||||
self::ALERT_LOG,
|
||||
self::CRITICAL_LOG,
|
||||
self::ERROR_LOG,
|
||||
] ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$wpdb->insert( "{$wpdb->prefix}brizy_logs", array(
|
||||
'type' => $type,
|
||||
'message' => $message,
|
||||
'context' => serialize( $context ),
|
||||
'session_id' => session_id(),
|
||||
'date' => current_time( 'mysql', 1 )
|
||||
), array( '%s', '%s', '%s', '%s', '%s' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* System is unusable.
|
||||
*
|
||||
* @param string $message
|
||||
* @param array $context
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function emergency( $message, array $context = array() ) {
|
||||
$this->log( self::EMERGENCY_LOG, $message, $context );
|
||||
}
|
||||
|
||||
/**
|
||||
* Action must be taken immediately.
|
||||
*
|
||||
* Example: Entire website down, database unavailable, etc. This should
|
||||
* trigger the SMS alerts and wake you up.
|
||||
*
|
||||
* @param string $message
|
||||
* @param array $context
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function alert( $message, array $context = array() ) {
|
||||
$this->log( self::ALERT_LOG, $message, $context );
|
||||
}
|
||||
|
||||
/**
|
||||
* Critical conditions.
|
||||
*
|
||||
* Example: Application component unavailable, unexpected exception.
|
||||
*
|
||||
* @param string $message
|
||||
* @param array $contextgt
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function critical( $message, array $context = array() ) {
|
||||
$this->log( self::CRITICAL_LOG, $message, $context );
|
||||
}
|
||||
|
||||
/**
|
||||
* Runtime errors that do not require immediate action but should typically
|
||||
* be logged and monitored.
|
||||
*
|
||||
* @param string $message
|
||||
* @param array $context
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function error( $message, array $context = array() ) {
|
||||
$this->log( self::ERROR_LOG, $message, $context );
|
||||
}
|
||||
|
||||
/**
|
||||
* Exceptional occurrences that are not errors.
|
||||
*
|
||||
* Example: Use of deprecated APIs, poor use of an API, undesirable things
|
||||
* that are not necessarily wrong.
|
||||
*
|
||||
* @param string $message
|
||||
* @param array $context
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function warning( $message, array $context = array() ) {
|
||||
$this->log( self::WARNING_LOG, $message, $context );
|
||||
}
|
||||
|
||||
/**
|
||||
* Normal but significant events.
|
||||
*
|
||||
* @param string $message
|
||||
* @param array $context
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function notice( $message, array $context = array() ) {
|
||||
$this->log( self::NOTICE_LOG, $message, $context );
|
||||
}
|
||||
|
||||
/**
|
||||
* Interesting events.
|
||||
*
|
||||
* Example: User logs in, SQL logs.
|
||||
*
|
||||
* @param string $message
|
||||
* @param array $context
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function info( $message, array $context = array() ) {
|
||||
$this->log( self::INFO_LOG, $message, $context );
|
||||
}
|
||||
|
||||
/**
|
||||
* Detailed debug information.
|
||||
*
|
||||
* @param string $message
|
||||
* @param array $context
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function debug( $message, array $context = array() ) {
|
||||
$this->log( self::DEBUG_LOG, $message, $context );
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs with an arbitrary level.
|
||||
*
|
||||
* @param mixed $level
|
||||
* @param string $message
|
||||
* @param array $context
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function log( $level, $message, array $context = array() ) {
|
||||
$this->write_log( $level, $message, $context );
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Exception $exception
|
||||
*/
|
||||
public function exception( \Exception $exception ) {
|
||||
$this->log( self::ERROR_LOG, $exception->getMessage(), array( $exception->getTraceAsString() ) );
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user