Skip to content
master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
src
 
 
 
 
 
 
 
 
 
 

LoggerDepot

is a depot for PHP application/software loggers

making loggers available on demand.

Each logger is identified by a unique and fixed (type case-sensitive string) key and set and retrieved using the key.

You can use namespace as key (ex __NAMESPACE__) setting up a logger and invoke the logger using (qualified namespaced) class names (ex get_class() or __CLASS__) in the namespace tree.

It is possible to combine fixed key and 'namespaced' loggers in the depot.

You may also use different keys for the same logger as well as set a logger as a fallback logger.

Invoking of a logger is as easy as LoggerDepot::getLogger( <key> ). If no logger is set, a Psr\Log\NullLogger is returned.

The construction makes it possible to supervise loggers for separate parts (functions, modules, components etc) of your software.

Usage

With <logger> (below) means any PHP logger and <logConfig> ) corresponding config.

  • logger set up
<?php
namespace Kigkonsult\Example;
use Kigkonsult\LoggerDepot\LoggerDepot;

LoggerDepot::registerLogger(
    __NAMESPACE__, // key
    new <logger>( <logConfig> )
);
  • usage in class
<?php
namespace Kigkonsult\Example;
use Kigkonsult\LoggerDepot\LoggerDepot;

class LoggerUserClass1
{
    private $logger = null;

    public function __construct() {
        $this->logger = LoggerDepot::getLogger( __CLASS__ );
        $this->logger->debug( 'Start ' . __CLASS__ );
    }

    public function aMethod( $argument ) {
        $this->logger->debug( 'Start ' . __METHOD__ );
        $this->logger->info( 'aMethod argument IN : ' . $argument );
    }
}

class LoggerUserClass2
{
    public static function bMethod( $argument ) {
        LoggerDepot::getLogger( __CLASS__ )->debug( 'Start ' . __METHOD__ );
    }
}
Register loggers
  • Set up a (string) keyed logger:
<?php
use Kigkonsult\LoggerDepot\LoggerDepot;

LoggerDepot::registerLogger( <key>, new <logger>( <logConfig> ));

Note, register using the same key again will replace existing logger.

  • Or check first if logger is set:
<?php
use Kigkonsult\LoggerDepot\LoggerDepot;

if( ! LoggerDepot::isLoggerSet( <key> )) {
    LoggerDepot::registerLogger( <key>, new <logger>( <logConfig> ));
}
getLogger usage 1
  • Get a (string) keyed logger, on demand:
<?php
use Kigkonsult\LoggerDepot\LoggerDepot;

$logger = LoggerDepot::getLogger( <key> );
  • or a one-liner (ex. for a Psr\Log logger):
<?php
use Kigkonsult\LoggerDepot\LoggerDepot;

LoggerDepot::getLogger( <key> )->error( 'Error message' );
getLogger usage 2

The search of requested logger is performed in logger (set-)order.

  • Set up a 'namespace' logger in top of a 'namespace' tree:
<?php
namespace Kigkonsult\Example;
use Kigkonsult\LoggerDepot\LoggerDepot;

LoggerDepot::registerLogger( __NAMESPACE__, new <logger>( <logConfig> ));
  • Get a 'namespace' logger in a class in the same/sub-level 'namespace' tree:
<?php
namespace Kigkonsult\Example\Impl;
use Kigkonsult\LoggerDepot\LoggerDepot;

class LoggerUserClass3
{
    public function aMethod( $argument ) {
        $logger = LoggerDepot::getLogger( get_class());
        ...
        $logger->info( 'aMethod argument IN : ' . $argument );
    }
}
  • or a one-liner (ex. for a Psr\Log logger):
<?php
namespace Kigkonsult\Example\Impl;
use Kigkonsult\LoggerDepot\LoggerDepot;

class LoggerUserClass4
{
    public function aMethod( $argument ) {
        LoggerDepot::getLogger( get_class())->error( 'Error message' );
    }
}
fallback
  • Set up a fallback logger to use in case requested logger is not found:
<?php
use Kigkonsult\LoggerDepot\LoggerDepot;

LoggerDepot::registerLogger( <key>, new <logger>( <logConfig> ));
LoggerDepot::setFallbackLoggerKey( <key> );

Note, LoggerDepot::setFallbackLoggerKey() return false if key (for logger) is not set.

  • or shorter
<?php
use Kigkonsult\LoggerDepot\LoggerDepot;

LoggerDepot::registerLogger( <key>, new <logger>( <logConfig> ), true );

The first logger is always set as fallback until specific logger is set. Hence, a single logger will also serve as fallback.

  • Fetch key for the fallback logger:
<?php
use Kigkonsult\LoggerDepot\LoggerDepot;

$key = LoggerDepot::getFallbackLoggerKey();
Misc
  • Fetch (array) all keys for all loggers:
<?php
use Kigkonsult\LoggerDepot\LoggerDepot;

$keys = LoggerDepot::getLoggerKeys();
  • Remove a specific logger:
<?php
use Kigkonsult\LoggerDepot\LoggerDepot;

LoggerDepot::unregisterLogger( <key> );

Caveat, removing the fallback logger will force 'the next' (in order) to take over.

  • And (in the end?) remove all:
<?php
use Kigkonsult\LoggerDepot\LoggerDepot;

foreach( LoggerDepot::getLoggerKeys() as $key ) {
    LoggerDepot::unregisterLogger( $key );
}
Installation

Composer, from the Command Line:

composer require kigkonsult/loggerdepot:dev-master

Composer, in your composer.json:

{
    "require": {
        "kigkonsult/loggerdepot": "dev-master"
    }
}

Composer, acquire access

use Kigkonsult\LoggerDepot\LoggerDepot;
...
include 'vendor/autoload.php';

Otherwise , download and acquire..

use Kigkonsult\LoggerDepot\LoggerDepot;
...
include 'pathToSource/loggerdepot/autoload.php';
License

This project is licensed under the LGPLv3 License

About

a depot for PHP application/software loggers making loggers available on demand

Resources

Sponsor this project

Packages

No packages published

Languages