PHP Classes

File: README.md

Recommend this page to a friend!
  Classes of Eric AGNEL   SLogger   README.md   Download  
File: README.md
Role: Documentation
Content type: text/markdown
Description: Read me
Class: SLogger
Log messages following the PSR-3 specification
Author: By
Last change: Updated readme and fixed enum method fromName().
Also added an example file.
Changes:
modified: README.md
new file: examples/asHTML.php
modified: src/Kuran/SLogger/ErrorLevel.php
modified: src/Kuran/SLogger/Logger.php (versioning)
Date: 4 months ago
Size: 5,366 bytes
 

Contents

Class file image Download

SLogger

A Simple Logger class for PhP.

Packagist PHP Version

About

This is a simple Logger class meant to be easy to implement so that you don't have to worry about to much configuration. This class follow a PSR-3 standard but do not implement directly the logger interface to make full use of enums as the error levels.

Basic Usage

The minimum setup needed to use the Logger class.

<?php
require_once("vendor/Autoloader.php");

use Kuran\SLOGGER\{Logger, ErrorLevel, Managers\FileManager};

/* Instantiate the class.
* Then create a new Manager. The FileManager include a default LineFormatter,
* which writes to 'app.log' by default.
*/
$log = new Logger( array( new FileManager() ) );


/* Simple log.
*  Needs a message body, and an array for context.
*/
$log->alert(
    message: "Test message for the file {:file}",
    context: array(
        ":file" => __FILE__,
        ":extras" => array(
            ["name" => "Admin", "username" => "admin"],
            ["name" => "Root", "username" => "root"]
            )
        )
);

Logger class options

- _Constructor_

| Argument | Description | | -------- | ------------------------------------------ | | managers | set an array of managers at instanciation. |

    __construct(array $managers = array())

Same as creating a logger without argument then using the _setManagers()_ function

- _setManagers method_

This method is used to set an array of managers to the logger. This will completly replace the Logger's managers list.

    setManagers(managers: = array(
        new FileManager(filePath: 'debug.log', level: ErrorLevel::Debug, formater: null),
        new FileManager(filePath: 'errors.log', level: ErrorLevel::Error, formater: null)
        )
    );

Many managers can be used to log messages to different files, or using different methods (Database...). Or to log messages with different Error Levels.

- _addManager method_

This method is used to add a simgle manager to the managers stack. If you want to add another _Manager_ later in your code.

    addManager(ManagerInterface $manager);

FileManager options

- _Constructor_

all arguments are optional. | Argument | Description | |----------|------------------------------------------------------------------------------------------| | filePath | If no filepath is defined, it will log message to _app.log_ by default | | level | Default level is _ErrorLevel::ERROR_ | | formater | If no Formater is defined, it will default to a _LineFormater_ with default options. |

__construct(
        filePath: = 'app.log',
        level: = ErrorLevel::ERROR,
        formater: = null)

- _setFormater_

used to replace the Formater already in place.

    setFormater(FormaterInterface $formater)

Usage

    $manager = new FileManager(
        filePath: "path/to/logfile.log",
        level: ErrorLevel::INFO, // Set the minimum Error level for this manager.
        formater: new LineFormater()
    )

    // Setting multiple managers with different Error Levels

    $log = new Logger();

    $errorManager = new FileManager(
        filePath: "error.log",
        level: ErrorLevel::ERROR
    );
    $debugManager = new FileManager(
        filePath: "debug.log",
        level: ErrorLevel::DEBUG
    );

    //set the Manager list to $errorManager and $debugManager
    $log->setManagers(array($errorManager, $debugManager));

    // add $manager to the list of managers
    $log->addManager($manager);

Error Levels

The Error levels are defined as follow in the _ErrorLevel_ enum

enum ErrorLevel: int
{
    case EMERGENCY = 800; //ErrorLevel::EMERGENCY
    case ALERT     = 700; //ErrorLevel::ALERT
    case CRITICAL  = 600; //ErrorLevel::CRITIAL
    case ERROR     = 500; //ErrorLevel::ERROR
    case WARNING   = 400; //ErrorLevel::WARNING
    case NOTICE    = 300; //ErrorLevel::NOTICE
    case INFO      = 200; //ErrorLevel::INFO
    case DEBUG     = 100; //ErrorLevel::DEBUG
}

ErrorLevel entry can be returned by name or number using the enum methods fromValue(int) and fromName(string).

    ErrorLevel::fromValue(700); // ErrorLevel::ALERT
    ErrorLevel::fromName('Notice'); // ErrorLevel::NOTICE

Both will throw an exeption if the value or name are invalid.

LineFormater options

- _Constructor_

All arguments are optional.

| Argument | Description | | ---------- | ---------------------------------------------------------------------------------- | | format | If no format is defined, it will default to Date \[ Level \] > Message Context | | timeFormat | If no date format is defined, it will default to Y-m-d H:i:s |

    __construct(
        string $format = null,
        string $timeFormat = null
        )

Usage

$formater = new LineFormater(
    format: "{:date} {:errorLevel} {:message} {:context}",
    timeFormat: "m-d-Y H:i"
);

For every entry used in the format using {:parameter}, a replacement will be made with entries from the context array.