File "SimpleLoggerFactory.php"
Full Path: /home/siazco/grocery.siazco.se/wp-content/plugins/flexible-shipping-pro/vendor_prefixed/wpdesk/wp-logs/src/SimpleLoggerFactory.php
File size: 2.2 KB
MIME-type: text/x-php
Charset: utf-8
<?php
declare (strict_types=1);
namespace FSProVendor\WPDesk\Logger;
use FSProVendor\Monolog\Handler\HandlerInterface;
use FSProVendor\Monolog\Handler\NullHandler;
use FSProVendor\Monolog\Logger;
use FSProVendor\Monolog\Handler\ErrorLogHandler;
use FSProVendor\WPDesk\Logger\WC\WooCommerceHandler;
final class SimpleLoggerFactory implements \FSProVendor\WPDesk\Logger\LoggerFactory
{
/** @var Settings */
private $options;
/** @var string */
private $channel;
/** @var Logger */
private $logger;
public function __construct(string $channel, \FSProVendor\WPDesk\Logger\Settings $options = null)
{
$this->channel = $channel;
$this->options = $options ?? new \FSProVendor\WPDesk\Logger\Settings();
}
public function getLogger($name = null) : \FSProVendor\Monolog\Logger
{
if ($this->logger) {
return $this->logger;
}
$this->logger = new \FSProVendor\Monolog\Logger($this->channel);
if ($this->options->use_wc_log) {
if (\function_exists('wc_get_logger')) {
$this->create_wc_handler();
} else {
\add_action('woocommerce_init', [$this, 'create_wc_handler']);
}
}
// Adding WooCommerce logger may have failed, if so add WP by default.
if ($this->options->use_wp_log || empty($this->logger->getHandlers())) {
$this->logger->pushHandler($this->get_wp_handler());
}
return $this->logger;
}
/**
* @internal
*/
public function create_wc_handler()
{
while (!$this->options->use_wp_log && !empty($this->logger->getHandlers())) {
$this->logger->popHandler();
}
$this->logger->pushHandler(new \FSProVendor\WPDesk\Logger\WC\WooCommerceHandler(\wc_get_logger(), $this->channel));
}
private function get_wp_handler() : \FSProVendor\Monolog\Handler\HandlerInterface
{
if (\defined('FSProVendor\\WP_DEBUG_LOG') && WP_DEBUG_LOG) {
return new \FSProVendor\Monolog\Handler\ErrorLogHandler(\FSProVendor\Monolog\Handler\ErrorLogHandler::OPERATING_SYSTEM, $this->options->level);
}
return new \FSProVendor\Monolog\Handler\NullHandler();
}
}