Wallogit.com
2017 © Pedro Peláez
This is a simple Log Viewer for viewing Code Igniter log files on the browser
This is a simple Log Viewer for viewing CodeIgniter logs in the browser or via API calls (that returns a JSON response), (*2)
This project is inspired by the laravel-log-viewer project., (*3)
A typical log view looks like this:, (*4)
, (*5)
For CodeIgniter 3, see this reference guide, (*6)
composer require seunmatt/codeigniter-log-viewer
All that is required is to execute the showLogs() method in a Controller that is mapped to a route:, (*7)
A typical Controller (LogViewerController.php) will have the following content:, (*8)
namespace App\Controllers;
use CILogViewer\CILogViewer;
class LogViewerController extends BaseController
{
public function index() {
$logViewer = new CILogViewer();
return $logViewer->showLogs();
}
}
Then the route app/Config/Routes.php can be configured like:, (*9)
$routes->get('logs', "LogViewerController::index");
And that's all! If you visit /logs on your browser
you should see all the logs that are in writable/logs folder and their content, (*10)
The package allows you to configure some of its parameters by creating a CILogViewer class in CodeIgniter's Config folder and then adding the following variables:, (*11)
The folder path for log files can be configured with the $logFolderPath config var., (*12)
The file pattern for matching all the log files in the log folder can be configured by adding $logFilePattern config var., (*13)
$viewName config var. Please note that this can be a route relative to your View path or a namespace route.Example configuration file app/Config/CILogViewer.php:, (*14)
<?php
namespace Config;
use CodeIgniter\Config\BaseConfig;
class CILogViewer extends BaseConfig {
public $logFilePattern = 'log-*.log';
public $viewName = 'logs'; //where logs exists in app/Views/logs.php
}
If you're developing an API Service, powered by CodeIgniter, this library can still be used to view your log files., (*15)
The setup is the same as that mentioned above:
- Create a Controller e.g. ApiLogViewerController.php,
- Create a function e.g. index()
- In the function, call echo $this->logViewer->showLogs();
- Finally, map your controller function to a route., (*16)
API Commands, (*17)
The API is implemented via a set of query params that can be appended to the /logs path., (*18)
Query:, (*19)
/logs?api=list will list all the log files available in the configured folderResponse:, (*20)
```json { "status": true, "log_files": [ { "file_b64": "bG9nLTIwMTgtMDEtMTkucGhw", "file_name": "log-2018-01-19.php" }, { "file_b64": "bG9nLTIwMTgtMDEtMTcucGhw", "file_name": "log-2018-01-17.php" } ] }, (*21)
**file_b64 is the base64 encoded name of the file that will be used in further operations and API calls** Query: - `/logs?api=view&f=bG9nLTIwMTgtMDEtMTcucGhw` will return the logs contained in the log file specified by the `f` parameter. The value of the `f` (*f stands for file*) is the base64 encoded format of the log file name. It is obtained from the `/logs?api=list` API call. A list of all available log files is also returned. Response: ```json { "log_files": [ { "file_b64": "bG9nLTIwMTgtMDEtMTkucGhw", "file_name": "log-2018-01-19.php" }, { "file_b64": "bG9nLTIwMTgtMDEtMTcucGhw", "file_name": "log-2018-01-17.php" } ], "status": true, "logs": [ "ERROR - 2018-01-23 07:12:31 --> 404 Page Not Found: admin/Logs/index", "ERROR - 2018-01-23 07:12:37 --> 404 Page Not Found: admin//index", "ERROR - 2018-01-23 15:23:02 --> 404 Page Not Found: Faviconico/index" ] } ``` The API Query can also take one last parameter, `sline` that will determine how the logs are returned When it's `true` the logs are returned in a single line: Query: `/logs?api=view&f=bG9nLTIwMTgtMDEtMTkucGhw&sline=true` Response: ```json { "log_files": [ { "file_b64": "bG9nLTIwMTgtMDEtMTkucGhw", "file_name": "log-2018-01-19.php" }, { "file_b64": "bG9nLTIwMTgtMDEtMTcucGhw", "file_name": "log-2018-01-17.php" } ], "status": true, "logs": "ERROR - 2018-01-23 07:12:31 --> 404 Page Not Found: admin/Logs/index\r\nERROR - 2018-01-23 07:12:37 --> 404 Page Not Found: admin//index\r\nERROR - 2018-01-23 15:23:02 --> 404 Page Not Found: Faviconico/index\r\n" }
When it's false (Default), the logs are returned in as an array, where each element is a line in the log file:, (*22)
Query:, (*23)
/logs?api=view&f=bG9nLTIwMTgtMDEtMTkucGhw&sline=false OR logs?api=view&f=bG9nLTIwMTgtMDEtMTkucGhw, (*24)
Response:, (*25)
```json {, (*26)
"logs": [
"ERROR - 2018-01-23 07:12:31 --> 404 Page Not Found: admin/Logs/index",
"ERROR - 2018-01-23 07:12:37 --> 404 Page Not Found: admin//index",
"ERROR - 2018-01-23 15:23:02 --> 404 Page Not Found: Faviconico/index"
]
} ```, (*27)
Query:, (*28)
/logs?api=delete&f=bG9nLTIwMTgtMDEtMTkucGhw will delete a single log file. The f parameter is the base64 encoded name of the file
and can be obtained from the view api above., (*29)
Query:, (*30)
/logs?api=delete&f=all will delete all log files in the configured folder path. Take note of the value for f which is the literal 'all'., (*31)
IF A FILE IS TOO LARGE (> 50MB), YOU CAN DOWNLOAD IT WITH THIS API QUERY /logs?dl=bG9nLTIwMTgtMDEtMTcucGhw, (*32)
It is Highly Recommended that you protect/secure the route for your logs. It should not be an open resource!, (*33)
Change Log is available here, (*34)
MIT, (*35)