settings = $settings; } /** * Logs an error. * * @since 0.1.0 * * @param string $message Message. * @param array $context Extra data. * @return void */ public function error( string $message, array $context = array() ): void { $this->log( 'error', $message, $context ); } /** * Logs a warning. * * @since 0.1.0 * * @param string $message Message. * @param array $context Extra data. * @return void */ public function warning( string $message, array $context = array() ): void { $this->log( 'warning', $message, $context ); } /** * Logs an informational message. * * @since 0.1.0 * * @param string $message Message. * @param array $context Extra data. * @return void */ public function info( string $message, array $context = array() ): void { $this->log( 'info', $message, $context ); } /** * Logs a message at the given level. * * @since 0.1.0 * * @param string $level One of error, warning, info. * @param string $message Message. * @param array $context Extra data. * @return void */ public function log( string $level, string $message, array $context = array() ): void { /** * Fires for every HostKhata log entry. * * @since 0.1.0 * * @param string $level Level. * @param string $message Message. * @param array $context Extra data. */ do_action( 'hostkhata_log', $level, $message, $context ); if ( ! $this->is_enabled() ) { return; } $line = sprintf( '[HostKhata][%s] %s', strtoupper( $level ), $message ); if ( $context ) { $line .= ' ' . wp_json_encode( $context ); } error_log( $line ); // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log -- Intentional, gated by the debug settings. } /** * Tells whether entries are written to the error log. * * @return bool */ private function is_enabled(): bool { if ( $this->settings->get( 'debug_log' ) ) { return true; } return defined( 'WP_DEBUG' ) && WP_DEBUG && defined( 'WP_DEBUG_LOG' ) && WP_DEBUG_LOG; } }