Skip to content
Snippets Groups Projects
Commit 8513b8e2 authored by dyszczo's avatar dyszczo
Browse files

### Changed

- getWPDeskFileName renamed to getFileName
- isWPDeskLogWorking renamed to isLogWorking
### Added
- most methods have $name parameter for using specific logger
parent 49eba5f5
No related branches found
No related tags found
1 merge request!6Feature/specific logger
Pipeline #6116 failed
[2.0] - 2018-10-29
##
### Changed
- getWPDeskFileName renamed to getFileName
- isWPDeskLogWorking renamed to isLogWorking
### Added
- most methods have $name parameter for using specific logger
## [1.1.1] - 2018-10-29
### Fixed
- should not capture all error - only log them
......
......@@ -19,19 +19,19 @@ class BasicLoggerFactory implements LoggerFactory
/**
* Creates logger for plugin
*
* @param string $channel The logging channel
* @param string $name The logging channel/name of logger
* @param HandlerInterface[] $handlers Optional stack of handlers, the first one in the array is called first, etc.
* @param callable[] $processors Optional array of processors
* @return Logger
*/
public function createLogger($channel, $handlers = array(), array $processors = array())
public function createLogger($name, $handlers = array(), array $processors = array())
{
if (Registry::hasLogger($channel)) {
return Registry::getInstance($channel);
if (Registry::hasLogger($name)) {
return Registry::getInstance($name);
}
self::$lastLoggerChannel = $channel;
self::$lastLoggerChannel = $name;
$logger = new Logger($channel, $handlers, $processors);
$logger = new Logger($name, $handlers, $processors);
Registry::addLogger($logger);
......@@ -39,12 +39,17 @@ class BasicLoggerFactory implements LoggerFactory
}
/**
* Returns created Logger
* Returns created Logger by name or last created logger
*
* @param string $name Name of the logger
*
* @return Logger
*/
public function getLogger()
public function getLogger($name = null)
{
return Registry::getInstance(self::$lastLoggerChannel);
if ($name === null) {
$name = self::$lastLoggerChannel;
}
return Registry::getInstance($name);
}
}
......@@ -20,34 +20,40 @@ class LoggerFacade
private static $factory;
/**
* Get logger by name. If not exists create one.
*
* @param string $name Name of the logger
* @return Logger
*/
public static function getLogger()
public static function getLogger($name = WPDeskLoggerFactory::DEFAULT_LOGGER_CHANNEL_NAME)
{
if (self::$factory === null) {
self::$factory = new WPDeskLoggerFactory();
}
return self::$factory->createWPDeskLogger();
return self::$factory->createWPDeskLogger($name);
}
/**
* Snake case alias for getLogger
*
* @param string $name
*
* @return Logger
*/
public static function get_logger()
public static function get_logger($name = WPDeskLoggerFactory::DEFAULT_LOGGER_CHANNEL_NAME)
{
return self::getLogger();
return self::getLogger($name);
}
/**
* If set, logs are disabled
*
* @param bool $flag
*
* @param string $name Name of the logger
*/
public static function set_disable_log($flag) {
self::getLogger();
public static function set_disable_log($flag, $name = WPDeskLoggerFactory::DEFAULT_LOGGER_CHANNEL_NAME)
{
self::getLogger($name);
self::$factory->setDisableLog($flag);
}
......@@ -62,8 +68,12 @@ class LoggerFacade
*
* @see http://php.net/manual/en/function.debug-backtrace.php
*/
public static function log_wp_error(WP_Error $e, array $backtrace, array $context = array(), $level = LogLevel::ERROR)
{
public static function log_wp_error(
WP_Error $e,
array $backtrace,
array $context = array(),
$level = LogLevel::ERROR
) {
$message = 'Error: ' . get_class($e) . ' Code: ' . $e->get_error_code() . ' Message: ' . $e->get_error_message();
self::log_message_backtrace($message, $backtrace, $context, $level);
......@@ -113,8 +123,12 @@ class LoggerFacade
* @param array $context Context to log
* @param string $level Level of error.
*/
public static function log_message_backtrace($message, array $backtrace, array $context = array(), $level = LogLevel::DEBUG)
{
public static function log_message_backtrace(
$message,
array $backtrace,
array $context = array(),
$level = LogLevel::DEBUG
) {
$message .= ' Backtrace: ' . json_encode($backtrace);
$source = null;
......
......@@ -12,7 +12,9 @@ interface LoggerFactory
/**
* Returns created Logger
*
* @param string $name
*
* @return Logger
*/
public function getLogger();
public function getLogger($name);
}
......@@ -18,7 +18,7 @@ use WPDesk\Logger\WC\WooCommerceCapture;
*/
class WPDeskLoggerFactory extends BasicLoggerFactory
{
const WPDESK_LOGGER_CHANNEL_NAME = 'wpdesk';
const DEFAULT_LOGGER_CHANNEL_NAME = 'wpdesk';
/** @var string Log to file when level is */
const LEVEL_WPDESK_FILE = LogLevel::DEBUG;
......@@ -31,13 +31,32 @@ class WPDeskLoggerFactory extends BasicLoggerFactory
*
* @param string $name Name of the logger
*/
public static function tearDown($name = self::WPDESK_LOGGER_CHANNEL_NAME)
public static function tearDown($name = self::DEFAULT_LOGGER_CHANNEL_NAME)
{
if (Registry::hasLogger($name)) {
Registry::removeLogger($name);
}
}
/**
* If set, logs are disabled
*
* @param bool $flag should be disabled?
* @param string $name Name of the logger
*/
public function setDisableLog($flag, $name = self::DEFAULT_LOGGER_CHANNEL_NAME)
{
if (!Registry::hasLogger($name)) {
$this->createWPDeskLogger($name);
}
/** @var Logger $logger */
$logger = Registry::getInstance($name);
/** @var BooleanFilter $filter */
$filter = $this->findHandlerByClass($logger, BooleanFilter::class);
$filter->setDisable($flag);
}
/**
* Creates default WPDesk logger.
*
......@@ -54,64 +73,26 @@ class WPDeskLoggerFactory extends BasicLoggerFactory
* @param string $name Name of the logger
* @return Logger
*/
public function createWPDeskLogger($name = self::WPDESK_LOGGER_CHANNEL_NAME)
public function createWPDeskLogger($name = self::DEFAULT_LOGGER_CHANNEL_NAME)
{
if (Registry::hasLogger($name)) {
return Registry::getInstance($name);
}
$logger = $this->createLogger($name);
$this->captureWooCommerce($logger);
$this->captureWordPressHandle($logger);
$this->captureErrorHandle($logger);
try {
$this->appendWPDeskHandle($logger);
$this->pushFileHandle($name, $logger);
} catch (\InvalidArgumentException $e) {
$logger->emergency('WPDesk log could not be created - invalid filename.');
$logger->emergency('File log could not be created - invalid filename.');
} catch (\Exception $e) {
$logger->emergency('WPDesk log could not be written.');
$logger->emergency('File log could not be written.');
}
$logger->pushHandler(new BooleanFilter());
return $logger;
}
/**
* If set, logs are disabled
*
* @param bool $flag should be disabled?
* @param string $name Name of the logger
*/
public function setDisableLog($flag, $name = self::WPDESK_LOGGER_CHANNEL_NAME)
{
if (!Registry::hasLogger($name)) {
$this->createWPDeskLogger($name);
}
/** @var Logger $logger */
$logger = Registry::getInstance($name);
/** @var BooleanFilter $filter */
$filter = $this->findHandlerByClass($logger, BooleanFilter::class);
$filter->setDisable($flag);
}
/**
* Find handler in logger
*
* @param Logger $logger
* @param string $class Class handle to find
*
* @return AbstractHandler If this is null then fatal failure is ok
*/
private function findHandlerByClass(Logger $logger, $class)
{
foreach ($logger->getHandlers() as $handle) {
/** @var AbstractHandler $handle */
if (is_a($handle, $class)) {
return $handle;
}
}
return null;
}
/**
* Capture WooCommerce and add handle
*
......@@ -132,7 +113,7 @@ class WPDeskLoggerFactory extends BasicLoggerFactory
*
* @param Logger $logger
*/
private function captureWordPressHandle(Logger $logger)
private function captureErrorHandle(Logger $logger)
{
$errorHandler = new ErrorHandler($logger);
$errorHandler->registerErrorHandler();
......@@ -142,33 +123,56 @@ class WPDeskLoggerFactory extends BasicLoggerFactory
* Add WPDesk log file handle
*
* @param Logger $logger
* @param string $name Name of the logger
*
* @throws \Exception If a missing directory is not buildable
* @throws \InvalidArgumentException If stream is not a resource or string
*/
private function appendWPDeskHandle(Logger $logger)
private function pushFileHandle($name, Logger $logger)
{
$filename = $this->getWPDeskFileName();
$filename = $this->getFileName($name);
$logger->pushHandler(new StreamHandler($filename, self::LEVEL_WPDESK_FILE));
}
/**
* Returns WPDesk filename with path.
*
* @param string $name Name of the logger
*
* @return string
*/
public function getWPDeskFileName()
public function getFileName($name = self::DEFAULT_LOGGER_CHANNEL_NAME)
{
return WP_CONTENT_DIR . '/uploads/wpdesk-logs/wpdesk_debug.log';
return WP_CONTENT_DIR . '/uploads/logs/' . $name . '_debug.log';
}
/**
* Find handler in logger
*
* @param Logger $logger
* @param string $class Class handle to find
*
* @return AbstractHandler If this is null then fatal failure is ok
*/
private function findHandlerByClass(Logger $logger, $class)
{
foreach ($logger->getHandlers() as $handle) {
/** @var AbstractHandler $handle */
if (is_a($handle, $class)) {
return $handle;
}
}
return null;
}
/**
* is WPDesk file log is working(writable, exists, connected).
* @param string $name Name of the logger
*
* @return bool
*/
public function isWPDeskLogWorking()
public function isLogWorking($name = self::DEFAULT_LOGGER_CHANNEL_NAME)
{
return Registry::hasLogger(self::WPDESK_LOGGER_CHANNEL_NAME);
return Registry::hasLogger($name);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment