rubel9997/multi-file-logger

This is my package multi-file-logger

1.0.0 2024-08-14 12:42 UTC

README

Latest Version on Packagist Tests Total Downloads

Multi-File Logger is a versatile PHP package designed to handle logging across multiple channels and formats. It provides a flexible logging solution that supports various logging mediums, including text files, JSON files, and databases. This package is ideal for projects that require extensive logging capabilities, enabling you to manage and store logs in different formats and locations efficiently.

Installation For PHP

You can install the package via composer:

composer require rubel9997/multi-file-logger

Database Setup

First, create a logs table in your database using the following SQL statement:

CREATE TABLE logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    level VARCHAR(100),
    message TEXT,
    context JSON,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Usage

use Rubel9997\MultiFileLogger\Loggers\LogManager;

// Log messages to different channels

$manager = new LogManager([
    'text' => ['path' => 'logs/text-log.txt'],
    'json' => ['path' => 'logs/json-log.json'],
    'stream' => ['path' => 'php://stdout'],
    'database' => [
        'connection' => 'mysql',
        'host' => '127.0.0.1',
        'database' => 'logger',
        'username' => 'root',
        'password' => '',
        'table' => 'logs',
    ]
]);

// Log messages to text file
$manager->driver('textFile')->log('info', 'This is a log message in a text file.');

// Log messages to json file
$manager->driver('jsonFile')->log('info', 'This is a log message in JSON format.');

// Log messages to stream
$manager->driver('stream')->log('info', 'This is a log message to stdout.');

// Log messages to database
$manager->driver('database')->log('info', 'This is a log message stored in the database.');

Installation For Laravel

You can install the package via Composer:

composer require rubel9997/multi-file-logger

After installing the package, you can publish the configuration file to customize the logging channels:

php artisan vendor:publish --provider="Rubel9997\MultiFileLogger\Loggers\LoggerServiceProvider" --tag="logger-config"

Database Setup

Please use a MySQL database connection for testing.

php artisan vendor:publish --provider="Rubel9997\MultiFileLogger\Loggers\LoggerServiceProvider" --tag="logger-migration"
php artisan migrate

Usage

use Rubel9997\MultiFileLogger\Loggers\LogManager;
use Rubel9997\MultiFileLogger\Loggers\Facades\LogFacade;

//use facade for store log with default driver
LogFacade::log('info', 'facade log');

// use multiple driver to store log
LogFacade::driver('textFile')->log('info', 'Facade: Log Message stored in text file.');
LogFacade::driver('jsonFile')->log('info', 'Facade: Log Message stored in JSON file.');
LogFacade::driver('stream')->log('info', 'Facade: Log Message stored in stream.');
LogFacade::driver('database')->log('info', 'Facade: Log Message stored in database.');

//use LogManager class for store log
$manager = app(LogManager::class);
$manager->driver('textFile')->log('info', 'Log Message store.');
$manager->driver('jsonFile')->log('info', 'Log Message store.');
$manager->driver('stream')->log('info', 'Log Message store.');
$manager->driver('database')->log('info', 'Log Message store.');

Credits

License

The MIT License (MIT). Please see License File for more information.