Examples

Real-world code samples for WPZylos Logger.

Application Logging

Service Class

class PaymentService
{
    public function __construct(
        private Logger $logger
    ) {}

    public function processPayment(Order $order): PaymentResult
    {
        $this->logger->info('Processing payment', [
            'order_id' => $order->id,
            'amount' => $order->total,
            'gateway' => $order->payment_method,
        ]);

        try {
            $result = $this->gateway->charge($order);

            $this->logger->info('Payment successful', [
                'order_id' => $order->id,
                'transaction_id' => $result->transactionId,
            ]);

            return $result;
        } catch (PaymentFailedException $e) {
            $this->logger->error('Payment failed', [
                'order_id' => $order->id,
                'error' => $e->getMessage(),
                'code' => $e->getCode(),
            ]);

            throw $e;
        }
    }
}

API Logging

class ApiController
{
    public function handleRequest(Request $request): Response
    {
        $this->logger->info('API request received', [
            'method' => $request->method(),
            'path' => $request->path(),
            'ip' => $request->ip(),
        ]);

        $startTime = microtime(true);

        try {
            $response = $this->process($request);

            $this->logger->info('API request completed', [
                'status' => $response->status(),
                'duration_ms' => (microtime(true) - $startTime) * 1000,
            ]);

            return $response;
        } catch (\Exception $e) {
            $this->logger->error('API request failed', [
                'exception' => get_class($e),
                'message' => $e->getMessage(),
                'duration_ms' => (microtime(true) - $startTime) * 1000,
            ]);

            throw $e;
        }
    }
}

Cron Job Logging

class DailyCleanupJob
{
    public function handle(): void
    {
        $this->logger->info('Daily cleanup started');

        $deleted = $this->cleanOldRecords();
        $this->logger->info('Old records cleaned', ['count' => $deleted]);

        $optimized = $this->optimizeTables();
        $this->logger->info('Tables optimized', ['tables' => $optimized]);

        $this->logger->info('Daily cleanup completed');
    }

    private function cleanOldRecords(): int
    {
        try {
            $count = DB::table('logs')
                ->where('created_at', '<', date('Y-m-d', strtotime('-30 days')))
                ->delete();

            return $count;
        } catch (\Exception $e) {
            $this->logger->error('Failed to clean old records', [
                'exception' => $e->getMessage(),
            ]);
            return 0;
        }
    }
}

User Activity Logging

class UserActivityLogger
{
    public function logLogin(WP_User $user): void
    {
        $this->logger->info('User logged in', [
            'user_id' => $user->ID,
            'username' => $user->user_login,
            'ip' => $_SERVER['REMOTE_ADDR'],
            'user_agent' => $_SERVER['HTTP_USER_AGENT'] ?? 'Unknown',
        ]);
    }

    public function logLogout(int $userId): void
    {
        $this->logger->info('User logged out', [
            'user_id' => $userId,
        ]);
    }

    public function logFailedLogin(string $username): void
    {
        $this->logger->warning('Failed login attempt', [
            'username' => $username,
            'ip' => $_SERVER['REMOTE_ADDR'],
        ]);
    }
}