File: //proc/thread-self/root/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);
		}
	}
}