107 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <!DOCTYPE html>
 | |
| <html lang="en">
 | |
|   <head>
 | |
|     <meta charset="utf-8">
 | |
|     <meta http-equiv="X-UA-Compatible" content="IE=edge">
 | |
|     <meta name="viewport" content="width=device-width, initial-scale=1">
 | |
|     <title>Laravel log viewer</title>
 | |
| 
 | |
|     <!-- Bootstrap -->
 | |
|     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css">
 | |
|     <link rel="stylesheet" href="https://cdn.datatables.net/plug-ins/9dcbecd42ad/integration/bootstrap/3/dataTables.bootstrap.css">
 | |
| 
 | |
| 
 | |
| 
 | |
|     <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
 | |
|     <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
 | |
|     <!--[if lt IE 9]>
 | |
|       <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
 | |
|       <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
 | |
|     <![endif]-->
 | |
|     
 | |
|   </head>
 | |
|   <body>
 | |
|     <div class="container-fluid">
 | |
|       <div class="row">
 | |
|         <div class="col-sm-3 col-md-2 sidebar">
 | |
|           <h1><span class="glyphicon glyphicon-calendar" aria-hidden="true"></span> Laravel Log Viewer</h1>
 | |
|           <p class="text-muted"><i>by Rap2h</i></p>
 | |
|           <div class="list-group">
 | |
|             @foreach($files as $file)
 | |
|               <a href="?l={{ base64_encode($file) }}" class="list-group-item @if ($current_file == $file) llv-active @endif">
 | |
|                 {{$file}}
 | |
|               </a>
 | |
|             @endforeach
 | |
|           </div>
 | |
|         </div>
 | |
|         <div class="col-sm-9 col-md-10 table-container">
 | |
|           @if ($logs === null)
 | |
|             <div>
 | |
|               Log file >50M, please download it.
 | |
|             </div>
 | |
|           @else
 | |
|           <table id="table-log" class="table table-striped">
 | |
|             <thead>
 | |
|               <tr>
 | |
|                 <th>Level</th>
 | |
|                 <th>Context</th>
 | |
|                 <th>Date</th>
 | |
|                 <th>Content</th>
 | |
|               </tr>
 | |
|             </thead>
 | |
|             <tbody>
 | |
| 
 | |
| @foreach($logs as $key => $log)
 | |
| <tr>
 | |
|   <td class="text-{{{$log['level_class']}}}"><span class="glyphicon glyphicon-{{{$log['level_img']}}}-sign" aria-hidden="true"></span>  {{$log['level']}}</td>
 | |
|   <td class="text">{{$log['context']}}</td>
 | |
|   <td class="date">{{{$log['date']}}}</td>
 | |
|   <td class="text">
 | |
|     @if ($log['stack']) <a class="pull-right expand btn btn-default btn-xs" data-display="stack{{{$key}}}"><span class="glyphicon glyphicon-search"></span></a>@endif
 | |
|     {{{$log['text']}}}
 | |
|     @if (isset($log['in_file'])) <br />{{{$log['in_file']}}}@endif
 | |
|     @if ($log['stack']) <div class="stack" id="stack{{{$key}}}" style="display: none; white-space: pre-wrap;">{{{ trim($log['stack']) }}}</div>@endif
 | |
|   </td>
 | |
| </tr>
 | |
| @endforeach
 | |
| 
 | |
|             </tbody>
 | |
|           </table>
 | |
|           @endif
 | |
|           <div>
 | |
|             <a href="?dl={{ base64_encode($current_file) }}"><span class="glyphicon glyphicon-download-alt"></span> Download file</a>
 | |
|             -
 | |
|             <a id="delete-log" href="?del={{ base64_encode($current_file) }}"><span class="glyphicon glyphicon-trash"></span> Delete file</a>
 | |
|           </div>
 | |
|         </div>
 | |
|       </div>
 | |
|     </div>
 | |
|     <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
 | |
|     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
 | |
|     <script src="https://cdn.datatables.net/1.10.4/js/jquery.dataTables.min.js"></script>
 | |
|     <script src="https://cdn.datatables.net/plug-ins/9dcbecd42ad/integration/bootstrap/3/dataTables.bootstrap.js"></script>
 | |
|     <script>
 | |
|       $(document).ready(function(){
 | |
|         $('#table-log').DataTable({
 | |
|           "order": [ 1, 'desc' ],
 | |
|           "stateSave": true,
 | |
|           "stateSaveCallback": function (settings, data) {
 | |
|             window.localStorage.setItem("datatable", JSON.stringify(data));
 | |
|           },
 | |
|           "stateLoadCallback": function (settings) {
 | |
|             var data = JSON.parse(window.localStorage.getItem("datatable"));
 | |
|             if (data) data.start = 0;
 | |
|             return data;
 | |
|           }
 | |
|         });
 | |
|         $('.table-container').on('click', '.expand', function(){
 | |
|           $('#' + $(this).data('display')).toggle();
 | |
|         });
 | |
|         $('#delete-log').click(function(){
 | |
|           return confirm('Are you sure?');
 | |
|         });
 | |
|       });
 | |
|     </script>
 | |
|   </body>
 | |
| </html>
 | 
