Skip to content

Phalcon logger

NOTE

All classes are prefixed with Phalcon

Logger\Logger

Source on GitHub

  • Namespace

    • Phalcon\Logger
  • Uses

    • Psr\Log\LoggerInterface
    • Phalcon\Logger\Adapter\AdapterInterface
    • Phalcon\Logger\Item
    • Phalcon\Logger\Exception
  • Extends

  • Implements

    • LoggerInterface

Phalcon Logger.

This component offers logging capabilities for your application. The component accepts multiple adapters, working also as a multiple logger. Phalcon\Logger implements PSR-3.

use Phalcon\Logger;
use Phalcon\Logger\Adapter\Stream;

$adapter1 = new Stream('/logs/first-log.log');
$adapter2 = new Stream('/remote/second-log.log');
$adapter3 = new Stream('/manager/third-log.log');

$logger = new Logger(
        'messages',
        [
            'local'   => $adapter1,
            'remote'  => $adapter2,
            'manager' => $adapter3,
        ]
    );

// Log to all adapters
$logger->error('Something went wrong');

// Log to specific adapters
$logger
        ->excludeAdapters(['manager'])
        ->info('This does not go to the "manager" logger');

Constants

const ALERT = 2;
const CRITICAL = 1;
const CUSTOM = 8;
const DEBUG = 7;
const EMERGENCY = 0;
const ERROR = 3;
const INFO = 6;
const NOTICE = 5;
const WARNING = 4;

Properties

/**
 * The adapter stack
 *
 * @var AdapterInterface[]
 */
protected $adapters;

/**
 * Minimum log level for the logger
 *
 * @var int
 */
protected $logLevel = 8;

/**
 * @var string
 */
protected $name = '';

/**
 * The excluded adapters for this log process
 *
 * @var AdapterInterface[]
 */
protected $excluded;

Methods

public function __construct( string $name, array $adapters = [] );
Constructor.

public function addAdapter( string $name, AdapterInterface $adapter ): Logger;
Add an adapter to the stack. For processing we use FIFO

public function alert( mixed $message, array $context = [] ): void;
Action must be taken immediately.

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

public function critical( mixed $message, array $context = [] ): void;
Critical conditions.

Example: Application component unavailable, unexpected exception.

public function debug( mixed $message, array $context = [] ): void;
Detailed debug information.

public function emergency( mixed $message, array $context = [] ): void;
System is unusable.

public function error( mixed $message, array $context = [] ): void;
Runtime errors that do not require immediate action but should typically be logged and monitored.

public function excludeAdapters( array $adapters = [] ): Logger;
Exclude certain adapters.

public function getAdapter( string $name ): AdapterInterface;
Returns an adapter from the stack

public function getAdapters(): array;
Returns the adapter stack array

public function getLogLevel(): int

public function getName(): string;
Returns the name of the logger

public function info( mixed $message, array $context = [] ): void;
Interesting events.

Example: User logs in, SQL logs.

public function log( mixed $level, mixed $message, array $context = [] ): void;
Logs with an arbitrary level.

public function notice( mixed $message, array $context = [] ): void;
Normal but significant events.

public function removeAdapter( string $name ): Logger;
Removes an adapter from the stack

public function setAdapters( array $adapters ): Logger;
Sets the adapters stack overriding what is already there

public function setLogLevel( int $level ): Logger;
Sets the log level above which we can log

public function warning( mixed $message, array $context = [] ): void;
Exceptional occurrences that are not errors.

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

protected function addMessage( int $level, string $message, array $context = [] ): bool;
Adds a message to each handler for processing

protected function getLevels(): array;
Returns an array of log levels with integer to string conversion

Logger\Adapter\AbstractAdapter Abstract

Source on GitHub

  • Namespace

    • Phalcon\Logger\Adapter
  • Uses

    • Phalcon\Logger\Exception
    • Phalcon\Logger\Formatter\FormatterInterface
    • Phalcon\Logger\Formatter\Line
    • Phalcon\Logger\Item
  • Extends

  • Implements

    • AdapterInterface

Properties

/**
 * Name of the default formatter class
 *
 * @var string
 */
protected $defaultFormatter = 'Line';

/**
 * Formatter
 *
 * @var FormatterInterface
 */
protected $formatter;

/**
 * Tells if there is an active transaction or not
 *
 * @var bool
 */
protected $inTransaction = false;

/**
 * Array with messages queued in the transaction
 *
 * @var array
 */
protected $queue;

Methods

public function __destruct();
Destructor cleanup

public function add( Item $item ): AdapterInterface;
Adds a message to the queue

public function begin(): AdapterInterface;
Starts a transaction

public function commit(): AdapterInterface;
Commits the internal transaction

public function getFormatter(): FormatterInterface;

public function inTransaction(): bool;
Returns the whether the logger is currently in an active transaction or not

abstract public function process( Item $item ): void;
Processes the message in the adapter

public function rollback(): AdapterInterface;
Rollbacks the internal transaction

public function setFormatter( FormatterInterface $formatter ): AdapterInterface;
Sets the message formatter

Logger\Adapter\AdapterInterface Interface

Source on GitHub

  • Namespace

    • Phalcon\Logger\Adapter
  • Uses

    • Phalcon\Logger\Formatter\FormatterInterface
    • Phalcon\Logger\Item
  • Extends

  • Implements

Phalcon\Logger\AdapterInterface

Interface for Phalcon\Logger adapters

Methods

public function add( Item $item ): AdapterInterface;
Adds a message in the queue

public function begin(): AdapterInterface;
Starts a transaction

public function close(): bool;
Closes the logger

public function commit(): AdapterInterface;
Commits the internal transaction

public function getFormatter(): FormatterInterface;
Returns the internal formatter

public function inTransaction(): bool;
Returns the whether the logger is currently in an active transaction or not

public function process( Item $item ): void;
Processes the message in the adapter

public function rollback(): AdapterInterface;
Rollbacks the internal transaction

public function setFormatter( FormatterInterface $formatter ): AdapterInterface;
Sets the message formatter

Logger\Adapter\Noop

Source on GitHub

  • Namespace

    • Phalcon\Logger\Adapter
  • Uses

    • Phalcon\Logger\Item
  • Extends

    AbstractAdapter

  • Implements

$logger = new \Phalcon\Logger\Adapter\Noop();

$logger->log(\Phalcon\Logger::ERROR, "This is an error");
$logger->error("This is another error");

$logger->close();

Methods

public function close(): bool;
Closes the stream

public function process( Item $item ): void;
Processes the message i.e. writes it to the file

Logger\Adapter\Stream

Source on GitHub

  • Namespace

    • Phalcon\Logger\Adapter
  • Uses

    • Phalcon\Logger\Adapter
    • Phalcon\Logger\Exception
    • Phalcon\Logger\Formatter\FormatterInterface
    • Phalcon\Logger\Item
    • UnexpectedValueException
  • Extends

    AbstractAdapter

  • Implements

Phalcon\Logger\Adapter\Stream

Adapter to store logs in plain text files

$logger = new \Phalcon\Logger\Adapter\Stream('app/logs/test.log');

$logger->log('This is a message');
$logger->log(\Phalcon\Logger::ERROR, 'This is an error');
$logger->error('This is another error');

$logger->close();

Properties

/**
 * Stream handler resource
 *
 * @var resource|null
 */
protected $handler;

/**
 * The file open mode. Defaults to "ab"
 *
 * @var string
 */
protected $mode = ab;

/**
 * Stream name
 *
 * @var string
 */
protected $name;

/**
 * Path options
 *
 * @var array
 */
protected $options;

Methods

public function __construct( string $name, array $options = [] );
Constructor. Accepts the name and some options

public function close(): bool;
Closes the stream

public function getName(): string

public function process( Item $item ): void;
Processes the message i.e. writes it to the file

Logger\Adapter\Syslog

Source on GitHub

  • Namespace

    • Phalcon\Logger\Adapter
  • Uses

    • LogicException
    • Phalcon\Helper\Arr
    • Phalcon\Logger
    • Phalcon\Logger\Adapter
    • Phalcon\Logger\Exception
    • Phalcon\Logger\Formatter\FormatterInterface
    • Phalcon\Logger\Item
  • Extends

    AbstractAdapter

  • Implements

Class Syslog

Sends logs to the system logger

use Phalcon\Logger;
use Phalcon\Logger\Adapter\Syslog;

// LOG_USER is the only valid log type under Windows operating systems
$logger = new Syslog(
    "ident",
    [
        "option"   => LOG_CONS | LOG_NDELAY | LOG_PID,
        "facility" => LOG_USER,
    ]
);

$logger->log("This is a message");
$logger->log(Logger::ERROR, "This is an error");
$logger->error("This is another error");

Properties

/**
 * Name of the default formatter class
 *
 * @var string
 */
protected $defaultFormatter = Line;

/**
 * @var int
 */
protected $facility = 0;

/**
 * @var string
 */
protected $name = '';

/**
 * @var bool
 */
protected $opened = false;

/**
 * @var int
 */
protected $option = 0;

Methods

public function __construct( string $name, array $options = [] );
Phalcon\Logger\Adapter\Syslog constructor

public function close(): bool;
Closes the logger

public function process( Item $item ): void;
Processes the message i.e. writes it to the syslog

Logger\AdapterFactory

Source on GitHub

  • Namespace

    • Phalcon\Logger
  • Uses

    • Phalcon\Factory\AbstractFactory
    • Phalcon\Logger\Adapter\AdapterInterface
    • Phalcon\Logger\Exception
  • Extends

    AbstractFactory

  • Implements

Factory used to create adapters used for Logging

Methods

public function __construct( array $services = [] );
AdapterFactory constructor.

public function newInstance( string $name, string $fileName, array $options = [] ): AdapterInterface;
Create a new instance of the adapter

protected function getAdapters(): array;

Logger\Exception

Source on GitHub

  • Namespace

    • Phalcon\Logger
  • Uses

  • Extends

    \Exception

  • Implements

Phalcon\Logger\Exception

Exceptions thrown in Phalcon\Logger will use this class

Logger\Formatter\AbstractFormatter Abstract

Source on GitHub

  • Namespace

    • Phalcon\Logger\Formatter
  • Uses

    • DateTimeImmutable
    • DateTimeZone
    • Phalcon\Logger
    • Phalcon\Logger\Item
  • Extends

  • Implements

    • FormatterInterface

Class AbstractFormatter

Properties

/**
 * Default date format
 *
 * @var string
 */
protected $dateFormat;

Methods

public function getDateFormat(): string

public function interpolate( string $message, mixed $context = null );
Interpolates context values into the message placeholders

@see https://www.php-fig.org/psr/psr-3/ Section 1.2 Message

public function setDateFormat( string $dateFormat )

protected function getFormattedDate(): string;
Returns the date formatted for the logger. @todo Not using the set time from the Item since we have interface misalignment which will break semver This will change in the future

Logger\Formatter\FormatterInterface Interface

Source on GitHub

  • Namespace

    • Phalcon\Logger\Formatter
  • Uses

    • Phalcon\Logger\Item
  • Extends

  • Implements

This interface must be implemented by formatters in Phalcon\Logger

Methods

public function format( Item $item ): string | array;
Applies a format to an item

Logger\Formatter\Json

Source on GitHub

  • Namespace

    • Phalcon\Logger\Formatter
  • Uses

    • Phalcon\Helper\Json
    • Phalcon\Logger\Item
  • Extends

    AbstractFormatter

  • Implements

Formats messages using JSON encoding

Methods

public function __construct( string $dateFormat = string );
Phalcon\Logger\Formatter\Json construct

public function format( Item $item ): string;
Applies a format to a message before sent it to the internal log

Logger\Formatter\Line

Source on GitHub

  • Namespace

    • Phalcon\Logger\Formatter
  • Uses

    • DateTime
    • Phalcon\Logger\Item
  • Extends

    AbstractFormatter

  • Implements

Formats messages using a one-line string

Properties

/**
 * Format applied to each message
 *
 * @var string
 */
protected $format;

Methods

public function __construct( string $format = string, string $dateFormat = string );
Phalcon\Logger\Formatter\Line construct

public function format( Item $item ): string;
Applies a format to a message before sent it to the internal log

public function getFormat(): string
public function setFormat( string $format )

Logger\Item

Source on GitHub

  • Namespace

    • Phalcon\Logger
  • Uses

  • Extends

  • Implements

Phalcon\Logger\Item

Represents each item in a logging transaction

Properties

/**
 * Log Context
 *      
 * @var mixed
 */
protected $context;

/**
 * Log message
 *
 * @var string
 */
protected $message;

/**
 * Log message
 *
 * @var string
 */
protected $name;

/**
 * Log timestamp
 *
 * @var integer
 */
protected $time;

/**
 * Log type
 *
 * @var integer
 */
protected $type;

Methods

public function __construct( string $message, string $name, int $type, int $time = int, mixed $context = [] );
Phalcon\Logger\Item constructor @todo Remove the time or change the signature to an array

public function getContext(): mixed
public function getMessage(): string
public function getName(): string
public function getTime(): integer
public function getType(): integer

Logger\LoggerFactory

Source on GitHub

  • Namespace

    • Phalcon\Logger
  • Uses

    • Phalcon\Config
    • Phalcon\Config\ConfigInterface
    • Phalcon\Helper\Arr
    • Phalcon\Logger
  • Extends

  • Implements

Factory creating logger objects

Properties

/**
 * @var AdapterFactory
 */
private adapterFactory;

Methods

public function __construct( AdapterFactory $factory );

public function load( mixed $config ): Logger;
Factory to create an instance from a Config object

public function newInstance( string $name, array $adapters = [] ): Logger;
Returns a Logger object