<?php namespace WPDesk\Logger\WC; use Monolog\Handler\AbstractProcessingHandler; use Monolog\Logger; /** * Class WooCommerceFactory */ class WooCommerceHandler extends AbstractProcessingHandler { const DEFAULT_WC_SOURCE = 'wpdesk-logger'; /** @var \WC_Logger_Interface */ private $wc_logger; /** @var string */ private $channel; /** * Writes the record down to the log of the implementing handler * * @param array $record * @return void */ protected function write( array $record ): void { $context = array_merge( [ 'source' => $this->channel, ], $record['extra'], $record['context'] ); $this->wc_logger->log( $this->convertMonologLevelToWC( $record['level'] ), $record['message'], $context ); } /** * @param int $level * @return string */ private function convertMonologLevelToWC( $level ): string { return Logger::getLevelName( $level ); } public function __construct( \WC_Logger_Interface $originalWcLogger, string $channel = self::DEFAULT_WC_SOURCE ) { parent::__construct(); $this->wc_logger = $originalWcLogger; $this->channel = $channel; } }