PHPackages                             gelembjuk/logger - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Logging &amp; Monitoring](/categories/logging)
4. /
5. gelembjuk/logger

ActiveLibrary[Logging &amp; Monitoring](/categories/logging)

gelembjuk/logger
================

Allows to add logging functions to different classes, helps to handle errors, log errors and display error screen. Can catch warnings and fatal errors

2.0.2(1y ago)08204MITPHP

Since Jul 26Pushed 1y ago2 watchersCompare

[ Source](https://github.com/Gelembjuk/logger)[ Packagist](https://packagist.org/packages/gelembjuk/logger)[ RSS](/packages/gelembjuk-logger/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (1)Versions (10)Used By (4)

Logger
------

[](#logger)

PHP Package for easy logging and error catching. **FileLogger** class based on Psr/Log helps to filter what to log. **ErrorScreen** class helps to catch PHP Warnings and Fatal errors and display correct error screen to a user. **ApplicationLogger** is a trait to include logger in different classes very easy

### Installation

[](#installation)

Using composer: [gelembjuk/logger](http://packagist.org/packages/gelembjuk/logger) `require: {"gelembjuk/logger": "*"}`

### Configuration

[](#configuration)

Configuration is done in run time with a constructor options (as hash argument)

#### Configure FileLogger

[](#configure-filelogger)

**logfile** path to your log file (where to write logs) **groupfilter** list of groups of events to log. `all` means log everything. Groups separated with **|** symbol

```
$logger1 = new Gelembjuk\Logger\FileLogger(
	array(
		'logfile' => $logfile,  // path to your log file (where to write logs)
		'groupfilter' => 'group1|group2|group3'  // list of groups of events to log. `all` means log everything
	));
```

#### Configure ErrorScreen

[](#configure-errorscreen)

**catchwarnings** - (true|false) . If true then user error handler is set to catch warnings

**catchfatals** - (true|false) . If true then fatal errors are catched. Use to log error and show `normal` error screen

**catchexceptions** - (true|false) . If true then uncatched exceptions will be catched by the object. Use this to catch exceptions missed in any try {} catch block

**showwarningmessage** - (true|false) . If true then error screen is displayed in case of warning. If is false then error is only logged

**showfatalmessage** - (true|false) . Display error screen for fatal errors. If false then only log is dine. User will see `standard` fatal error in this case

**viewformat** - set vaue for the `viewformat` variable. Possible values: html, json, xml, http . html is default value

**showtrace** - (true|false). Switcher to know if to show error trace for a user as part of error screen

**commonerrormessage** - string Common error message to show to a user when error happens

**logger** - Object of FileLogger class

**loggeroptions** - Options to create new FileLogger object

```
$errors = new Gelembjuk\Logger\ErrorScreen(
		array(
			'logger' => $logger1 /*create before*/,
			'viewformat' => 'html',
			'catchwarnings' => true,
			'catchfatals' => true,
			'showfatalmessage' => true,
			'commonerrormessage' => 'Sorry, somethign went wrong. We will solve ASAP'
		)
	);
```

### Usage

[](#usage)

#### FileLogger

[](#filelogger)

```
require '../vendor/autoload.php';

$logger1 = new Gelembjuk\Logger\FileLogger(
	array(
		'logfile' => '/tmp/log.txt',
		'groupfilter' => 'all' // log everything this time
	));

// do test log write
$logger1->debug('Test log',array('group' => 'test'));

$logger1->setGroupFilter('group1|group2'); // after this only group1 and group2 events are logged

$logger1->debug('This message will not be in logs as `test` is out of filter',array('group' => 'test'));
```

#### ApplicationLogger trait

[](#applicationlogger-trait)

```
require '../vendor/autoload.php';

class A {
}

class B extends A {
	// include the trait to have logging functionality in this class
	use Gelembjuk\Logger\ApplicationLogger;

	public function __construct($logger) {
		$this->setLogger($logger);

		$this->logQ('B object create','construct|B');
	}

	public function doSomething() {
		$this->logQ('doSomething() in B','B');
	}
}

class C {
	use Gelembjuk\Logger\ApplicationLogger;

	public function __construct($logger) {
		$this->setLogger($logger);

		$this->logQ('C object create','construct|C');
	}

	public function doOtherThing() {
		$this->logQ('oOtherThing() in C','C');
	}
}

$b = new B($logger1); // $logger1 is instance of FileLogger
$c = new C($logger1);

$b->doSomething();
$c->doOtherThing();
```

#### ErrorScreen

[](#errorscreen)

```
require '../vendor/autoload.php';

$errors = new Gelembjuk\Logger\ErrorScreen(
		array(
			'logger' => $logger1 /*created before*/,
			'viewformat' => 'html',
			'catchwarnings' => true,
			'catchfatals' => true,
			'showfatalmessage' => true,
			'commonerrormessage' => 'Sorry, somethign went wrong. We will solve ASAP'
		)
	);

// to catch exceptions on the top level of the app
try {
	// do something

} catch (Exception $e) {
	$errors->processError($e);
}

// presume there was no exception
// now catch warning

// warning is raised and catched in errors object
// error message displayed to a user
include('not_existent_file.php');
```

### Author

[](#author)

Roman Gelembjuk (@gelembjuk)

###  Health Score

39

—

LowBetter than 85% of packages

Maintenance49

Moderate activity, may be stable

Popularity14

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity69

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~442 days

Recently: every ~159 days

Total

9

Last Release

400d ago

Major Versions

1.1.2 → 2.0.12025-04-04

### Community

Maintainers

![](https://www.gravatar.com/avatar/af567529d048ed36455232a1f1ec9aaa9addb8eef9fb79f14acd4dbf614573a3?d=identicon)[gelembjuk](/maintainers/gelembjuk)

---

Top Contributors

[![Gelembjuk](https://avatars.githubusercontent.com/u/1552191?v=4)](https://github.com/Gelembjuk "Gelembjuk (24 commits)")

### Embed Badge

![Health badge](/badges/gelembjuk-logger/health.svg)

```
[![Health](https://phpackages.com/badges/gelembjuk-logger/health.svg)](https://phpackages.com/packages/gelembjuk-logger)
```

###  Alternatives

[sentry/sentry

PHP SDK for Sentry (http://sentry.io)

1.9k227.1M269](/packages/sentry-sentry)[rollbar/rollbar

Monitors errors and exceptions and reports them to Rollbar

33723.7M81](/packages/rollbar-rollbar)[illuminate/log

The Illuminate Log package.

6224.3M516](/packages/illuminate-log)[open-telemetry/sdk

SDK for OpenTelemetry PHP.

2222.9M248](/packages/open-telemetry-sdk)[open-telemetry/api

API for OpenTelemetry PHP.

1833.0M214](/packages/open-telemetry-api)[pagemachine/typo3-formlog

Form log for TYPO3

23225.3k6](/packages/pagemachine-typo3-formlog)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
