| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- <?php
- defined('ABSPATH') || exit;
- if (!defined('NEWSLETTER_LOG_DIR')) {
- define('NEWSLETTER_LOG_DIR', WP_CONTENT_DIR . '/logs/newsletter');
- }
- class NewsletterLogger {
- const NONE = 0;
- const FATAL = 1;
- const ERROR = 2;
- const INFO = 3;
- const DEBUG = 4;
- var $level;
- var $module;
- var $file;
- function __construct($module) {
- $this->module = $module;
- if (defined('NEWSLETTER_LOG_LEVEL')) $this->level = NEWSLETTER_LOG_LEVEL;
- else $this->level = get_option('newsletter_log_level', self::ERROR);
- $secret = get_option('newsletter_logger_secret');
- if (strlen($secret) < 8) {
- $secret = NewsletterModule::get_token(8);
- update_option('newsletter_logger_secret', $secret);
- }
- if (!wp_mkdir_p(NEWSLETTER_LOG_DIR)) {
- $this->level = self::NONE;
- }
- $this->file = NEWSLETTER_LOG_DIR . '/' . $module . '-' . date('Y-m') . '-' . $secret . '.txt';
- }
- /**
- *
- * @param string|WP_Error|array|stdClass $text
- * @param int $level
- */
- function log($text, $level = self::ERROR) {
- global $current_user;
-
- if ($level != self::FATAL && $this->level < $level) return;
-
- if ($current_user) {
- $user_id = $current_user->ID;
- } else {
- $user_id = 0;
- }
- $time = date('d-m-Y H:i:s ');
- switch ($level) {
- case self::FATAL: $time .= '- FATAL';
- break;
- case self::ERROR: $time .= '- ERROR';
- break;
- case self::INFO: $time .= '- INFO ';
- break;
- case self::DEBUG: $time .= '- DEBUG';
- break;
- }
- if (is_wp_error($text)) {
- /* @var $text WP_Error */
- $text = $text->get_error_message() . ' (' . $text->get_error_code() . ') - ' . print_r($text->get_error_data(), true);
- } else {
- if (is_array($text) || is_object($text)) $text = print_r($text, true);
- }
-
- // The "logs" dir is created on Newsletter constructor.
- $res = @file_put_contents($this->file, $time . ' - m: ' . size_format(memory_get_usage(), 1) . ', u: ' . $user_id . ' - ' . $text . "\n", FILE_APPEND | FILE_TEXT);
- if ($res === false) {
- $this->level = self::NONE;
- }
- }
- function error($text) {
- self::log($text, self::ERROR);
- }
- function info($text) {
- $this->log($text, self::INFO);
- }
- function fatal($text) {
- $this->log($text, self::FATAL);
- }
- function debug($text) {
- $this->log($text, self::DEBUG);
- }
- }
|