В 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();
});
}
}
}
Пример вывода лога