Create New Item
×
Item Type
File
Folder
Item Name
×
Search file in folder and subfolders...
File Manager
/
wp-content
/
plugins
/
woocommerce
/
includes
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php use Automattic\Jetpack\Constants; defined('ABSPATH') || exit; class WC_Logger implements WC_Logger_Interface { protected $handlers; protected $threshold; public function __construct($handlers = null, $threshold = null) { if (null === $handlers) { $handlers = apply_filters('woocommerce_register_log_handlers', array()); } $register_handlers = array(); if (!empty($handlers) && is_array($handlers)) { foreach ($handlers as $handler) { $implements = class_implements($handler); if (is_object($handler) && is_array($implements) && in_array('WC_Log_Handler_Interface', $implements, true)) { $register_handlers[] = $handler; } else { wc_doing_it_wrong(__METHOD__, sprintf(__('The provided handler %1$s does not implement %2$s.', 'woocommerce'), '<code>' . esc_html(is_object($handler) ? get_class($handler) : $handler) . '</code>', '<code>WC_Log_Handler_Interface</code>'), '3.0'); } } } if (null === $threshold) { $threshold = Constants::get_constant('WC_LOG_THRESHOLD'); if (null !== $threshold && !WC_Log_Levels::is_valid_level($threshold)) { $threshold = null; } } if (null !== $threshold) { $threshold = WC_Log_Levels::get_level_severity($threshold); } $this->handlers = $register_handlers; $this->threshold = $threshold; } protected function should_handle($level) { if (null === $this->threshold) { return true; } return $this->threshold <= WC_Log_Levels::get_level_severity($level); } public function add($handle, $message, $level = WC_Log_Levels::NOTICE) { $message = apply_filters('woocommerce_logger_add_message', $message, $handle); $this->log($level, $message, array('source' => $handle, '_legacy' => true)); wc_do_deprecated_action('woocommerce_log_add', array($handle, $message), '3.0', 'This action has been deprecated with no alternative.'); return true; } public function log($level, $message, $context = array()) { if (!WC_Log_Levels::is_valid_level($level)) { wc_doing_it_wrong(__METHOD__, sprintf(__('%1$s was called with an invalid level "%2$s".', 'woocommerce'), '<code>WC_Logger::log</code>', $level), '3.0'); } if ($this->should_handle($level)) { $timestamp = time(); foreach ($this->handlers as $handler) { $message = apply_filters('woocommerce_logger_log_message', $message, $level, $context, $handler); if (null !== $message) { $handler->handle($timestamp, $level, $message, $context); } } } } public function emergency($message, $context = array()) { $this->log(WC_Log_Levels::EMERGENCY, $message, $context); } public function alert($message, $context = array()) { $this->log(WC_Log_Levels::ALERT, $message, $context); } public function critical($message, $context = array()) { $this->log(WC_Log_Levels::CRITICAL, $message, $context); } public function error($message, $context = array()) { $this->log(WC_Log_Levels::ERROR, $message, $context); } public function warning($message, $context = array()) { $this->log(WC_Log_Levels::WARNING, $message, $context); } public function notice($message, $context = array()) { $this->log(WC_Log_Levels::NOTICE, $message, $context); } public function info($message, $context = array()) { $this->log(WC_Log_Levels::INFO, $message, $context); } public function debug($message, $context = array()) { $this->log(WC_Log_Levels::DEBUG, $message, $context); } public function clear($source = '') { if (!$source) { return false; } foreach ($this->handlers as $handler) { if (is_callable(array($handler, 'clear'))) { $handler->clear($source); } } return true; } public function clear_expired_logs() { $days = absint(apply_filters('woocommerce_logger_days_to_retain_logs', 30)); $timestamp = strtotime("-{$days} days"); foreach ($this->handlers as $handler) { if (is_callable(array($handler, 'delete_logs_before_timestamp'))) { $handler->delete_logs_before_timestamp($timestamp); } } } }