Мои мысли и проекты
Создаем сайт на Lumen (Laravel) - Логирование
Дома из сэндвич панелеи дом из панели сэндвич metalsystems.ru.
Большой выбор шиномонтажных материалов. Оптовая и розничная продажа.

В Laravel/Lumen с логированием все хорошо. Можно писать в лог, можно выводить на экран с помощью функций dd и dump.

Добавлю модуль SLog который сможет выводить лог в виде иерархии. Типичный пример:

	// Отправить события на обработку
	public function send() {
		SLog::groupBegin()->setTitle('send')->setType('SCache'); // Начало группы 
		$events = array_keys($this->events);
		SLog::group('events',$events); // Вывод группы events в текущую группу
		// Определим список элементов КЕШ-а к которым привязаны события
		$entryIds = Model\Event::select('entry_id')->whereIn('id',$events)->get()->pluck('entry_id')->unique()->toArray();
		SLog::group('entryIds',$entryIds); // Вывод группы entryIds в текущую группу
		if( !empty($entryIds) ) {
			//
			$entryAll = $entryIds;
			// Определим вышестоящие элементы КЕШ-а
			while(true) {
				$entryIds = Model\Hier::select('parent_id')->whereIn('child_id',$entryIds)->get()->pluck('parent_id')->unique()->toArray();
				SLog::group('parent.entryIds',$entryIds);
				// Если ничего не выбрали
				if( empty($entryIds) ) {
					// то дальше можно не продолжать
					break;
				}
				$entryAll = array_merge($entryAll,$entryIds);
			}
			$entryAll = array_unique($entryAll);
			SLog::group('entryAll',$entryAll);
			// Выберем элементы КЕШ-а
			$entrys = Model\Entry::select('id as entry_id','ons')->whereIn('id',$entryAll)->get();
			SLog::group2('$entrys',$entrys);
			// Удалим выбранные элементы КЕШ-а + события этих элементов + иерархию			
			$ids = [];
			foreach($entrys as $entry) {
				//
				$ids[] = $entry->entry_id;
				// Обработчики
				$ons = unserialize($entry->ons);
				// Если указан обработчик для удаления
				if( array_key_exists('remove',$ons) ) {
					// то вызвать его
					$ons['remove']();
				}
			}
			//
			Model\Event::whereIn('entry_id',$ids)->delete();
			Model\Hier::whereIn('parent_id',$ids)->delete();
			Model\Entry::whereIn('id',$ids)->delete();
		}
		SLog::groupEnd(); // Окончание группы
	}

Создам ServiceProvider для вывода в лог SQL запросов

class ServiceProvider extends \Illuminate\Support\ServiceProvider
{
	public function boot() {
		if( SLog::isEnable() ) {
			DB::listen(function ($query) {
				SLog::groupBegin()->setTitle($query->sql)->setType('SQL');
				//*
				SLog::out(view("Log::content_sql",[
									'sql'=>$query->sql,
									'bindings' => $query->bindings,
									'time' => $query->time
								]));
				//*/
				SLog::groupEnd();
			});
		}
	}    
}

Пример вывода лога

0

Комментарии

Чтобы оставлять комментарии войдите на сайт. Вы можете сделать это через социальную сеть