HEX
Server: nginx
System: Linux pool195-106-36.bur.atomicsites.net 6.12.57+deb12-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.57-1~bpo12+1 (2025-11-17) x86_64
User: (0)
PHP: 8.3.32
Disabled: pcntl_fork
Upload Files
File: /wordpress/plugins/wp-cloud-client/beta/src/Support/Logger.php
<?php

declare(strict_types=1);

namespace VPlugins\WPCloudClient\Support;

class Logger {

	private const PREFIX = '[WP Cloud Client]';

	/**
	 * Log an informational message.
	 *
	 * @param string $message The log message.
	 * @param mixed  $context Optional context data or exception.
	 * @return void
	 */
	public function info( string $message, mixed $context = null ): void {
		$this->log( 'INFO', $message, $context );
	}

	/**
	 * Log an error message.
	 *
	 * @param string $message The log message.
	 * @param mixed  $context Optional context data or exception.
	 * @return void
	 */
	public function error( string $message, mixed $context = null ): void {
		$this->log( 'ERROR', $message, $context );
	}

	/**
	 * Log a warning message.
	 *
	 * @param string $message The log message.
	 * @param mixed  $context Optional context data or exception.
	 * @return void
	 */
	public function warning( string $message, mixed $context = null ): void {
		$this->log( 'WARNING', $message, $context );
	}

	/**
	 * Write a log entry at the specified level.
	 *
	 * @param string $level   The log level (INFO, ERROR, WARNING).
	 * @param string $message The log message.
	 * @param mixed  $context Optional context data or exception.
	 * @return void
	 */
	private function log( string $level, string $message, mixed $context ): void {
		$entry = sprintf( '%s [%s] %s', self::PREFIX, $level, $message );

		if ( $context instanceof \Throwable ) {
			$entry .= sprintf( ' | Exception: %s in %s:%d', $context->getMessage(), $context->getFile(), $context->getLine() );
		} elseif ( null !== $context ) {
			$entry .= ' | ' . wp_json_encode( $context );
		}

		error_log( $entry );
	}
}