v-dem / queasy-log
Logger classes (currently supports file system, console and simple email logging), part of QuEasy PHP Framework
Requires
- php: >=5.3.0|>=7.0.0
- psr/log: ~1.1
Requires (Dev)
- php: >=7.2.0
- ext-xdebug: ^2.6.0
- phpunit/phpunit: ~7
Suggests
- queasy/config: Configuration provider package, supports PHP (and multifile configs in this case), INI, XML and JSON (and YAML in future) formats
Provides
- psr/log-implementation: 1.0.0
This package is auto-updated.
Last update: 2024-10-18 06:54:24 UTC
README
QuEasy PHP Framework - Logger
Package v-dem/queasy-log
Contains logger classes compatible with PSR-3 logger interface. Currently file system and console loggers are implemented. This package includes these types of logging:
- Logger (base class, can be used as a container for other loggers)
- FileSystemLogger
- ConsoleLogger (supports ANSI color codes)
- SimpleMailLogger (encapsulates
mail()
function)
Features
- PSR-3 compatible.
- Easy to use.
- Easy to extend.
- Nested loggers support.
- Configurable output message format.
Requirements
- PHP version 5.3 or higher
Documentation
See our Wiki page.
Installation
composer require v-dem/queasy-log:master-dev
Usage
Let's imagine we have the following config.php
:
return [ 'logger' => [ 'class' => queasy\log\FileSystemLogger::class, // Logger class 'processName' => 'test', // Process name, to differentiate log messages from different sources 'minLevel' => Psr\Log\LogLevel::WARNING, // Message's minimum acceptable log level 'path' => 'debug.log' // Path to logger output file ] ];
Creating logger instance
Include Composer autoloader:
require_once('vendor/autoload.php');
Create config instance (using v-dem/queasy-config
package):
$config = new queasy\config\Config('config.php');
Or using arrays:
$config = include('config.php');
Create logger instance (in this case class
option can be omitted and will be ignored):
$logger = new queasy\log\Logger($config);
Another way to create logger instance (it will create an instance of $config->logger->class
, by default queasy\log\Logger
as an aggregate logger will be used):
$logger = queasy\log\Logger::create($config);
FileSystemLogger
andConsoleLogger
have default settings and can be used without config. Default log file path forFileSystemLogger
isdebug.log
, default min log level isPsr\Log\LogLevel::DEBUG
and max isLogLevel::EMERGENCY
.
Writing messages to log
Output warning message:
$logger->warning('Test warning message.');
In debug.log
you'll see something like this:
2017-12-24 16:13:09.302334 EET test [] [] [WARNING] Test warning message.
Chain log messages
$logger ->warning('going strange') ->error('cannot connect to the database') ->emergency('the website is down');
Using composite/nested loggers
config.php
:
return [ [ 'class' => queasy\log\FileSystemLogger::class, 'path' => 'debug.full.log', 'minLevel' => Psr\Log\LogLevel::DEBUG, [ 'class' => queasy\log\ConsoleLogger::class, 'minLevel' => Psr\Log\LogLevel::INFO ], [ 'class' => queasy\log\SimpleMailLogger::class, 'minLevel' => Psr\Log\LogLevel::ALERT, 'mailTo' => 'john.doe@example.com', 'subject' => 'Website Alert' ] ], [ 'class' => queasy\log\FileSystemLogger::class, 'path' => 'debug.log', 'minLevel' => Psr\Log\LogLevel::INFO ] ];
Usage:
$config = new queasy\config\Config('config.php'); $logger = new queasy\log\Logger($config); $logger->info('Hello, world!');
Using date/time in log file name (note "%s" there, it will be replaced by current date and/or time formatted as described in timeLabel
)
config.php
:
return [ [ 'class' => queasy\log\FileSystemLogger::class, 'path' => 'debug-full.%s.log', 'timeLabel' => 'Y-m-d', 'minLevel' => Psr\Log\LogLevel::DEBUG ] ];