Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/seunmatt/codeigniter-log-viewer
This is a simple Log Viewer for viewing Code Igniter logs on the browser and via API clients
https://github.com/seunmatt/codeigniter-log-viewer
codeigniter codeigniter-log-viewer igniter-logs log-viewer php
Last synced: 7 days ago
JSON representation
This is a simple Log Viewer for viewing Code Igniter logs on the browser and via API clients
- Host: GitHub
- URL: https://github.com/seunmatt/codeigniter-log-viewer
- Owner: SeunMatt
- License: mit
- Created: 2018-01-09T03:25:57.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2024-07-13T07:02:19.000Z (6 months ago)
- Last Synced: 2024-12-22T02:06:09.931Z (7 days ago)
- Topics: codeigniter, codeigniter-log-viewer, igniter-logs, log-viewer, php
- Language: PHP
- Homepage:
- Size: 248 KB
- Stars: 95
- Watchers: 8
- Forks: 39
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
CodeIgniter Log Viewer
======================[![Latest Stable Version](https://poser.pugx.org/seunmatt/codeigniter-log-viewer/v/stable)](https://packagist.org/packages/seunmatt/codeigniter-log-viewer) [![Total Downloads](https://poser.pugx.org/seunmatt/codeigniter-log-viewer/downloads)](https://packagist.org/packages/seunmatt/codeigniter-log-viewer) [![License](https://poser.pugx.org/seunmatt/codeigniter-log-viewer/license)](https://packagist.org/packages/seunmatt/codeigniter-log-viewer)
This is a simple Log Viewer for viewing CodeIgniter logs in the browser or via API calls (that returns a JSON response)
This project is inspired by the [laravel-log-viewer project](https://github.com/rap2hpoutre/laravel-log-viewer).
A typical log view looks like this:
![sample.png](sample.png)
Usage
=====**For CodeIgniter 3, see this [reference guide](https://github.com/SeunMatt/codeigniter-log-viewer/wiki/CodeIgniter-3-Guide)**
Requirements
-----------
- PHP >= 7.4
- CodeIgniter 4Composer Installation
---------------------
```
composer require seunmatt/codeigniter-log-viewer
```Controller Integration for Browser Display
------------------------------------------All that is required is to execute the `showLogs()` method in a Controller that is mapped to a route:
A typical Controller *(LogViewerController.php)* will have the following content:
```php
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:
```php
$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 contentConfiguration
==============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:
- The folder path for log files can be configured with the `$logFolderPath` config var.
- The file pattern for matching all the log files in the log folder can be configured by adding `$logFilePattern` config var.
- The name of the view that renders the logs page can be changed using the `$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`:
```php
logViewer->showLogs();`
- Finally, map your controller function to a route.
API Commands
------------
The API is implemented via a set of query params that can be appended to the `/logs` path.
Query:
- `/logs?api=list` will list all the log files available in the configured folderResponse:
```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"
}
]
}
```**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:Query:
`/logs?api=view&f=bG9nLTIwMTgtMDEtMTkucGhw&sline=false` OR `logs?api=view&f=bG9nLTIwMTgtMDEtMTkucGhw`
Response:
```json
{
"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"
]
}
```
Query:`/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.Query:
`/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**'.
**IF A FILE IS TOO LARGE (> 50MB), YOU CAN DOWNLOAD IT WITH THIS API QUERY `/logs?dl=bG9nLTIwMTgtMDEtMTcucGhw`**
SECURITY NOTE
=============
**It is Highly Recommended that you protect/secure the route for your logs. It should not be an open resource!**Change Log
==========
[Change Log is available here](./CHANGELOG.md)Author
======
- [Seun Matt](https://smattme.com)Contributors
============
- [Miguel Martinez](https://github.com/savioret)LICENSE
=======
[MIT](LICENSE)