SeunMatt / codeigniter-log-viewer

This is a simple Log Viewer for viewing Code Igniter logs on the browser and via API clients
MIT License
96 stars 39 forks source link
codeigniter codeigniter-log-viewer igniter-logs log-viewer php

CodeIgniter Log Viewer

Latest Stable Version Total Downloads License

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.

A typical log view looks like this:

sample.png

Usage

For CodeIgniter 3, see this reference guide

Requirements

Composer 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:

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:

$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

Configuration

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:

Example configuration file app/Config/CILogViewer.php:

<?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
}

Viewing Log Files via API Calls

If you're developing an API Service, powered by CodeIgniter, this library can still be used to view your log files.

Controller Setup

The setup is the same as that mentioned above:

Response:

{
    "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:

Query:

/logs?api=view&f=bG9nLTIwMTgtMDEtMTkucGhw&sline=false OR logs?api=view&f=bG9nLTIwMTgtMDEtMTkucGhw

Response:

{

    "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

Author

Contributors

LICENSE

MIT