ADmad d302919174 Merge branch '3.next' into phpstan-l3 8 years ago
..
Engine aa23283a22 Fix few errors reported by phpstan. 8 years ago
LICENSE.txt c61ab5ee95 Use HTTPS for the cakefoundation.org URL 8 years ago
Log.php 8d4a13a3d1 Use HTTPS for various other URLs 8 years ago
LogEngineRegistry.php 3a6bd75832 Use HTTPS for the opensource.org URL 8 years ago
LogTrait.php 3a6bd75832 Use HTTPS for the opensource.org URL 8 years ago
README.md fe1d812c89 Update URL in *.md, *.json 9 years ago
composer.json 8400540c75 Add missing core dependencies and bump versions. 8 years ago

README.md

Total Downloads License

CakePHP Logging Library

The Log library provides a Log service locator for interfacing with multiple logging backends using a simple interface. With the Log class it is possible to send a single message to multiple logging backends at the same time or just a subset of them based on the log level or context.

By default you can use Files or Syslog as logging backends, but you can use any object implementing Psr\Log\LoggerInterface as an engine for the Log class.

Usage

You can define as many or as few loggers as your application needs. Loggers should be configured using Cake\Core\Log. An example would be:

use Cake\Cache\Cache;

use Cake\Log\Log;

// Short classname
Log::config('local', [
    'className' => 'FileLog',
    'levels' => ['notice', 'info', 'debug'],
    'file' => '/path/to/file.log',
]);

// Fully namespaced name.
Log::config('production', [
    'className' => 'Cake\Log\Engine\SyslogLog',
    'levels' => ['warning', 'error', 'critical', 'alert', 'emergency'],
]);

It is also possible to create loggers by providing a closure.

Log::config('special', function () {
	// Return any PSR-3 compatible logger
	return new MyPSR3CompatibleLogger();
});

Or by injecting an instance directly:

Log::config('special', new MyPSR3CompatibleLogger());

You can then use the Log class to pass messages to the logging backends:

Log::write('debug', 'Something did not work');

Only the logging engines subscribed to the log level you are writing to will get the message passed. In the example above, only the 'local' engine will get the log message.

Filtering messages with scopes

The Log library supports another level of message filtering. By using scopes, you can limit the logging engines that receive a particular message.

// Configure /logs/payments.log to receive all levels, but only
// those with `payments` scope.
Log::config('payments', [
    'className' => 'FileLog',
    'levels' => ['error', 'info', 'warning'],
    'scopes' => ['payments'],
    'file' => '/logs/payments.log',
]);

Log::warning('this gets written only to payments.log', ['scope' => ['payments']]);

Documentation

Please make sure you check the official documentation