bayfrontmedia/multi-logger

An easy-to-use library used to manage multiple Monolog channels from a single class.

v1.1.0 2023-08-16 13:45 UTC

This package is auto-updated.

Last update: 2024-05-16 15:17:39 UTC


README

An easy-to-use library used to manage multiple Monolog channels from a single class.

License

This project is open source and available under the MIT License.

Author

Bayfront Media

Requirements

  • PHP ^8.0

Installation

composer require bayfrontmedia/multi-logger

Usage

NOTE: All exceptions thrown by Multi-Logger extend Bayfront\MultiLogger\Exceptions\MultiLoggerException, so you can choose to catch exceptions as narrowly or broadly as you like.

Multi-Logger exists in order manage multiple Monolog channels from a single class.

In some cases, you may still need to interact with the Monolog\Logger object directly, and Multi-Logger allows you to do that via the getChannel method.

A Logger instance must be passed to the constructor, and will automatically be set as the default and current channel.

To aid in consistency when referencing log channels, the Bayfront\MultiLogger\ChannelName class contains constants with suggested channel names, including:

  • APP
  • AUDIT
  • CLI
  • DATABASE
  • CONTROLLER
  • DEV
  • ERROR
  • HEALTH
  • HTTP
  • JOB
  • MODEL
  • NOTIFICATION
  • OPS
  • PRIVILEGES
  • PROD
  • QA
  • QUEUE
  • REQUEST
  • RESPONSE
  • ROUTER
  • SCHEDULE
  • SECURITY
  • STAGING
  • STORAGE

Example:

use Bayfront\MultiLogger\ChannelName;
use Bayfront\MultiLogger\Log;
use Monolog\Logger;
use Monolog\Handler\FirePHPHandler;

$app_channel = new Logger(ChannelName::APP);
$app_channel->pushHandler(new FirePHPHandler());

$log = new Log($app_channel);

Public methods

Logging events

getChannels

Description:

Return array of channel names.

Parameters:

  • (None)

Returns:

  • (array)

getDefaultChannel

Description:

Return name of default channel.

Parameters:

  • (None)

Returns:

  • (string)

getCurrentChannel

Description:

Return name of current channel.

Parameters:

  • (None)

Returns:

  • (string)

addChannel

Description:

Add a logger instance as a new channel with the same name.

If an existing instance exists with the same name, it will be overwritten.

Parameters:

  • $logger (object): Monolog\Logger object

Returns:

  • (self)

Example:

use Bayfront\MultiLogger\ChannelName;
use Monolog\Logger;
use Monolog\Handler\FirePHPHandler;

$audit_channel = new Logger(ChannelName::AUDIT);
$audit_channel->pushHandler(new FirePHPHandler());

$log->addChannel($audit_channel);

isChannel

Description:

Does channel name exist?

Parameters:

  • $channel (string)

Returns:

  • (bool)

Example:

if ($log->isChannel(ChannelName::APP)) {
    // Do something
}

getChannel

Description:

Returns Logger instance for a given channel.

Parameters:

  • $channel = '' (string): Name of channel to return. If empty string, the current channel will be returned.

Returns:

  • (object): Monolog\Logger object

Throws:

  • Bayfront\MultiLogger\Exceptions\ChannelNotFoundException

Example:

try {

    $app_channel = $log->getChannel(ChannelName::APP);

} catch (ChannelNotFoundException $e) {
    die($e->getMessage());
}

channel

Description:

Set the channel name to be used for the next logged event.

By default, all logged events will be logged to the default channel used in the constructor.

Parameters:

  • $channel (string)

Returns:

  • (self)

Throws:

  • Bayfront\MultiLogger\Exceptions\ChannelNotFoundException

Example:

try {
    
    $log->channel(ChannelName::AUDIT)->info('This is an informational log message.');
    
} catch (ChannelNotFoundException $e) {
    die($e->getMessage());
}

emergency

Description:

System is unusable.

Parameters:

  • $message (string)
  • $context (array)

Returns:

  • (void)

alert

Description:

Action must be taken immediately.

Example: Entire website down, database unavailable, etc. This should trigger the SMS alerts and wake you up.

Parameters:

  • $message (string)
  • $context (array)

Returns:

  • (void)

critical

Description:

Critical conditions.

Example: Application component unavailable, unexpected exception.

Parameters:

  • $message (string)
  • $context (array)

Returns:

  • (void)

error

Description:

Runtime errors that do not require immediate action but should typically be logged and monitored.

Parameters:

  • $message (string)
  • $context (array)

Returns:

  • (void)

warning

Description:

Exceptional occurrences that are not errors.

Example: Use of deprecated APIs, poor use of an API, undesirable things that are not necessarily wrong.

Parameters:

  • $message (string)
  • $context (array)

Returns:

  • (void)

notice

Description:

Normal but significant events.

Parameters:

  • $message (string)
  • $context (array)

Returns:

  • (void)

info

Description:

Interesting events.

Example: User logs in, SQL logs.

Parameters:

  • $message (string)
  • $context (array)

Returns:

  • (void)

debug

Description:

Detailed debug information.

Parameters:

  • $message (string)
  • $context (array)

Returns:

  • (void)

log

Description:

Logs with an arbitrary level.

Parameters:

  • $level (mixed)
  • $message (string)
  • $context (array)

Returns:

  • (void)