derywat/php-logging

Simple, extendable PHP logging library.

Installs: 4

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/derywat/php-logging

0.1.2 2025-12-11 09:55 UTC

This package is auto-updated.

Last update: 2025-12-11 10:02:39 UTC


README

Caution

LoggerInterface and classes methods are NOT STABLE until anounced.

Single target loggers

Single target loggers allow logging to single target - file, stdOut, strErr.

StdOutLogger & StdErrLogger

StdOutLogger class allows logging to stdOut. StdErrLogger class allows logging to stdErr.

use derywat\logging\LogLevel;
use derywat\logging\StdOutLogger;

$logger = (new StdOutLogger())->setLevel(LogLevel::INFO);

//log something...
$logger->log(LogLevel::INFO,'main process','main process example log message.');

FileLogger

FileLogger class allows logging to file.

use derywat\logging\FileLogger;
use derywat\logging\LogLevel;

$logger = (new FileLogger())->setLogFile('var/log/service.info.log')->setLevel(LogLevel::INFO);

//log something...
$logger->log(LogLevel::INFO,'main process','main process example log message.');

Multiple target loggers

CompositeLogger

CompositeLogger class allows logging to multiple single target loggers.

use derywat\logging\CompositeLogger;
use derywat\logging\FileLogger;
use derywat\logging\LogLevel;
use derywat\logging\StdErrLogger;
use derywat\logging\StdOutLogger;

$logger = ((new CompositeLogger())

	//StdOut logger - logging levels from INFO to WARN
	->addLogger((new StdOutLogger())->setLevel(LogLevel::INFO)->setMaxLevel(LogLevel::WARN))

	//StdErr logger - logging levels from ERROR
	->addLogger((new StdErrLogger())->setLevel(LogLevel::ERROR))

	//File logger - logging levels from INFO
	->addLogger((new FileLogger())->setLogFile('var/log/service.info.log')->setLevel(LogLevel::INFO))

	//File logger - logging levels from WARN
	->addLogger((new FileLogger())->setLogFile('var/log/service.warn.log')->setLevel(LogLevel::WARN))

	//File logger - logging levels from ERROR
	->addLogger((new FileLogger())->setLogFile('var/log/service.error.log')->setLevel(LogLevel::ERROR))
);

//log something...
$logger->log(LogLevel::INFO,'main process','main process example log message.');

Adding loggers

New loggers can be implemented by extending abstract Logger class.

class NewLogger extends Logger implements LoggerInterface {

	protected function _writeToLog(LogLevel $level, String $source, String $message){
		//default log line formatting defined in Logger class
		$line = $this->_formatLogLine($level,$source,$message);

		//put code writing/sending $line to log here

	}

}

Loggers methods

setLevel

Sets minimal logging level (inclusive)

//sets minimum log level to WARN, lower levels (DEBUG, INFO) are not written to log
$logger->setLevel(LogLevel::WARN);

setMaxLevel

Sets maximal logging level (inclusive)

//sets maximum log level to WARN, higher levels (ERROR, FATAL) are not written to log
$logger->setMaxLevel(LogLevel::WARN);

setDateFormat

Sets date format for log lines.
Expected format string is the same as for use with DateTime.format() method.
Default Logger class format: 'Y-m-d\TH:i:s.uP'.

	$logger->setDateFormat('Y-m-d H:i:s');

log

Log method writes line to log.

$logger->log(LogLevel::INFO,'main process','example log message');

Log output format:

2025-12-09T14:41:52.362406+01:00: [info] (main process): example log message

LogLevel

LogLevel enum class defines logging levels.

Levels / log file representation

  • DEBUG / [debug]
  • INFO / [info]
  • WARN / [warning]
  • ERROR / [error]
  • FATAL / [fatal]