andybeak
8/7/2015 - 3:31 PM

Laravel request logging middleware

Laravel request logging middleware

<?php namespace App\Http\Middleware;

use Auth;
use Closure;
use Config;
use Log;

class LoggingMiddleware {

	/**
	 * Logs incoming requests if debug mode is enabled.
	 * Rememeber to enable it as global middleware in App\Http\Kernal.php
	 * 'App\Http\Middleware\LoggingMiddleware',
         *
	 * @param  \Illuminate\Http\Request  $request
	 * @param  \Closure  $next
	 * @return mixed
	 */
	public function handle($request, Closure $next)
	{
        if (Config::get('app.debug'))
        {
            $message = 'Request : ';

            if (Auth::check())
            {
                $user = Auth::user();
                $user = 'User ' . $user->id;
            }
            else
            {
                $user = 'Anon';
            }

            $message .= '[' . $user . '] ' . $request->method() . ' ' . $request->path();

            $input = $request->all();

            if (!empty($input))
            {
                $message .= "\r\n";
                foreach ($input as $key => $value)
                {
                    $message .= "\t" . $key . ' => ' . $value . "\r\n";
                }
            }

            Log::debug($message);
            
        }

        return $next($request);

	}

}