43 lines
1.3 KiB
PHP
43 lines
1.3 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace App\Http\Controllers\Api\V1;
|
||
|
|
|
||
|
|
use App\Models\Log;
|
||
|
|
use Illuminate\Http\JsonResponse;
|
||
|
|
use Illuminate\Http\Request;
|
||
|
|
|
||
|
|
class LogsController extends BaseController
|
||
|
|
{
|
||
|
|
/**
|
||
|
|
* Display a listing of logs
|
||
|
|
*/
|
||
|
|
public function index(Request $request): JsonResponse
|
||
|
|
{
|
||
|
|
try {
|
||
|
|
$perPage = min($request->get('per_page', 20), 100);
|
||
|
|
$level = $request->get('level');
|
||
|
|
|
||
|
|
$query = Log::orderBy('created_at', 'desc');
|
||
|
|
|
||
|
|
if ($level) {
|
||
|
|
$query->where('level', $level);
|
||
|
|
}
|
||
|
|
|
||
|
|
$logs = $query->paginate($perPage);
|
||
|
|
|
||
|
|
return $this->sendResponse([
|
||
|
|
'logs' => $logs->items(),
|
||
|
|
'pagination' => [
|
||
|
|
'current_page' => $logs->currentPage(),
|
||
|
|
'last_page' => $logs->lastPage(),
|
||
|
|
'per_page' => $logs->perPage(),
|
||
|
|
'total' => $logs->total(),
|
||
|
|
'from' => $logs->firstItem(),
|
||
|
|
'to' => $logs->lastItem(),
|
||
|
|
],
|
||
|
|
], 'Logs retrieved successfully.');
|
||
|
|
} catch (\Exception $e) {
|
||
|
|
return $this->sendError('Failed to retrieve logs: ' . $e->getMessage(), [], 500);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|