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() ) ); } }