Browse Source

Added laravel log files viewer

Changed log setting to daily to get daily log files
Changed log_max_files to 30 to view last 30 days log files
pull/6/head
Nafies Luthfi 9 years ago
parent
commit
f7181b5c7a
  1. 37
      app/Http/Controllers/LogFilesController.php
  2. 4
      config/app.php
  3. 2
      resources/views/layouts/partials/top-nav.blade.php
  4. 66
      resources/views/log-files.blade.php
  5. 7
      routes/web.php

37
app/Http/Controllers/LogFilesController.php

@ -0,0 +1,37 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class LogFilesController extends Controller
{
public function index() {
if (!file_exists(storage_path('logs')))
return [];
$logFiles = \File::allFiles(storage_path('logs'));
// Sort files by modified time DESC
usort($logFiles, function($a, $b) {
return -1 * strcmp($a->getMTime(), $b->getMTime());
});
return view('log-files',compact('logFiles'));
}
public function show($fileName) {
if (file_exists(storage_path('logs/' . $fileName)))
return response()->file(storage_path('logs/' . $fileName), ['content-type' => 'text/plain']);
return 'Invalid file name.';
}
public function download($fileName) {
if (file_exists(storage_path('logs/' . $fileName)))
return response()->download(storage_path('logs/' . $fileName), env('APP_ENV') . '.' . $fileName);
return 'Invalid file name.';
}
}

4
config/app.php

@ -120,7 +120,9 @@ return [
|
*/
'log' => env('APP_LOG', 'single'),
'log' => 'daily',
'log_max_files' => 30,
'log_level' => env('APP_LOG_LEVEL', 'debug'),

2
resources/views/layouts/partials/top-nav.blade.php

@ -55,7 +55,9 @@
<ul class="dropdown-menu" role="menu">
<li>{{ link_to_route('users.index', trans('user.list')) }}</li>
<li>{{ link_to_route('backups.index', trans('backup.list')) }}</li>
<li>{{ link_to_route('log-files.index', 'Log Files') }}</li>
<li>{{ link_to_route('change-password', trans('auth.change_password')) }}</li>
<li role="separator" class="divider"></li>
<li>
<a href="{{ route('logout') }}"
onclick="event.preventDefault();

66
resources/views/log-files.blade.php

@ -0,0 +1,66 @@
@extends('layouts.app')
@section('title','Log Files')
@section('content')
<h3 class="page-header">Application Log Files</h3>
<div class="row">
<div class="col-md-8">
<div class="panel panel-default">
<table class="table table-condensed">
<thead>
<th>#</th>
<th>File Name</th>
<th>Size</th>
<th>Time</th>
<th>{{ trans('app.action') }}</th>
</thead>
<tbody>
@if (File::exists('error_log'))
<tr>
<td>0</td>
<td>error_log</td>
<td>{{ formatSizeUnits(File::size('error_log')) }}</td>
<td>{{ date('Y-m-d H:i:s', File::lastModified('error_log')) }}</td>
<td>
{!! html_link_to_route('log-files.server-error-log','',[],[
'class'=>'btn btn-default btn-xs',
'icon' => 'search',
'id' => 'view-error-log',
'title' => 'View file error_log',
'target' => '_blank',
]) !!}
</td>
</tr>
@endif
@forelse($logFiles as $key => $logFile)
<tr>
<td>{{ $key + 1 }}</td>
<td>{{ $logFile->getFilename() }}</td>
<td>{{ formatSizeUnits($logFile->getSize()) }}</td>
<td>{{ date('Y-m-d H:i:s', $logFile->getMTime()) }}</td>
<td>
{{ link_to_route('log-files.show', 'Lihat', [$logFile->getFilename()],[
'class'=>'btn btn-default btn-xs',
'id' => 'view-' . $logFile->getFilename(),
'title' => 'View file ' . $logFile->getFilename(),
'target' => '_blank'
]) }}
{{ link_to_route('log-files.download', 'Download', [$logFile->getFilename()],[
'class'=>'btn btn-default btn-xs',
'id' => 'download-' . $logFile->getFilename(),
'title' => 'Download file ' . $logFile->getFilename()
]) }}
</td>
</tr>
@empty
<tr>
<td colspan="3">No Log File Exists</td>
</tr>
@endforelse
</tbody>
</table>
</div>
</div>
</div>
@endsection

7
routes/web.php

@ -75,4 +75,11 @@ Route::group(['middleware' => 'auth'], function () {
Route::post('backups/{fileName}/restore', ['as'=>'backups.restore', 'uses'=>'BackupsController@restore']);
Route::get('backups/{fileName}/dl', ['as'=>'backups.download', 'uses'=>'BackupsController@download']);
Route::resource('backups', 'BackupsController', ['except' => ['create', 'show', 'edit']]);
/**
* Log Viewer routes
*/
Route::get('log-files', ['as' => 'log-files.index', 'uses' => 'LogFilesController@index']);
Route::get('log-files/{filename}', ['as' => 'log-files.show', 'uses' => 'LogFilesController@show']);
Route::get('log-files/{filename}/download', ['as' => 'log-files.download', 'uses' => 'LogFilesController@download']);
});
Loading…
Cancel
Save