SLogger
A Simple Logger class for PhP.
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.
Basic Usage
The minimum setup needed to use the Logger class.
<?php
require_once("vendor/Autoloader.php");
use Kuran\SLOGGER\{Logger, ErrorLevel, Managers\FileManager};
/* Instanciate the Logger.
* Add a Manager to the logger. The manager has a default Formater.
*/
$log = new Logger(
array(
new FileManager()
)
);
/* Simple log.
* Needs a message body, and an array for context.
*/
$log->alert(
"Test message for the file {:file}",
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 replace the Logger's managers list.
setManagers(array $managers);
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(
string $filePath = 'app.log',
ErrorLevel $level = ErrorLevel::ERROR,
FormaterInterface $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->setManager(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
}
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"
);