HEX
Server: LiteSpeed
System: Linux php-prod-3.spaceapp.ru 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC 2025 x86_64
User: sarli3128 (1010)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /home/retile.ru/public_html/system/library/stdelog.php
<?php

/**
 * @category OpenCart
 * @package StdeLog
 * @description Amateur Log for OpenCart
 * @version 0.9.0
 * @copyright © Serge Tkach, 2020, http://sergetkach.com/
 */

class StdeLog {
	private $filename = 'StdeLog';
	private $debug = 1;

	public function __construct($filename) {
		$this->setFilename($filename);
	}

	public function setFilename($filename) {
		$this->filename = $filename;
	}

	public function setDebug($debug) {
		$this->debug = $debug;
	}

	/*
	 * Используется следующая классификация логов:
	 * 1 (error) - логируем только ошибки (хотя также бывают еще и fatal и warning)
	 * 2 (info) - логируем только крупные операции, которые проявляются редко (нажатие на кнопку генерации к пример...)
	 * 3 (debug) - логируем крупные операции + данные в запросах пользователя + другие доп сведения...
	 * 4 (trace) - логируем все подряд, если дебаг не помогает
	 * По мотивам https://habr.com/ru/post/135242/
	 */
	
	/*
	 * $this->stdelog->write(2, 'generateProductKeyword() is called'); // Запишет переданный текст, если debug будет >= 2
	 * $this->stdelog->write(4, $a_data, 'generateProductKeyword() : $a_data'); // Запишет переменную переданный текст, если debug будет >= 2
	 */

	// TODO
	// Q??
	// Может сделать так, чтобы в случае ERROR, они бы записывались еще и в отдельный файл??
	function write($level, $data, $title = false, $filename = false) {
		if ($level > $this->debug) {
			return false;
		}

		$levels = array(
			1	=>'ERROR',
			2	=>'INFO',
			3	=>'DEBUG',
			4	=>'TRACE'
		);

		// TODO
		// Тут можно дописать удаление вчерашних логов

		if (!$filename) {
			$filename = $this->filename;
		}

		if (is_string($data)) {
			$str = '';

			if ($title) {
				$str = "$title : ";
			}

			$str .= $data;

			file_put_contents(DIR_LOGS . $filename . '_' . date("Y-m-d") . '.log', $levels[$level] . ' -- [' . date("Y/m/d H:i:s") . '] -- ' . $str . "\r\n------------------------------------------------------------------------------------\r\n", FILE_APPEND | LOCK_EX);
		} else {
			ob_start();

			if ($title) {
				echo "$title:\r\n";
			} else {
				echo "Array\r\n";
			}

			print_r($data);
			$c = ob_get_contents();
			ob_clean();

			file_put_contents(DIR_LOGS . $filename . '_' . date("Y-m-d") . '.log', $levels[$level] . ' -- [' . date("Y/m/d H:i:s") . '] -- ' . "$c" . "\r\n------------------------------------------------------------------------------------\r\n", FILE_APPEND | LOCK_EX);
		}
	}

}