Project

General

Profile

Actions

Feature #94600

closed

Epic #94356: Embrace PSR-3

Use Monolog for injected logging services

Added by Larry Garfield over 3 years ago. Updated almost 2 years ago.

Status:
Rejected
Priority:
Should have
Category:
Logging
Target version:
Start date:
2021-07-20
Due date:
% Done:

0%

Estimated time:
PHP Version:
Tags:
Complexity:
Sprint Focus:

Description

Monolog is a much more robust logger than the existing one in core. There's no sense competing with it, just leveraging it effectively.

This design is driven by a new `typo3conf/logging.yaml` file. Its format looks like this:

monolog:
  channels:
    default:
      handlers: ['@Monolog\Handler\SyslogHandler']
      processors: ['@Monolog\Processor\MemoryUsageProcessor']
      min_level: info
    deprecations:
      handlers: ['@Monolog\Handler\SyslogHandler']
      processors: ~
      min_level: DEBUG
  classes:
    Foo\Bar:
      handlers: [ '@monolog.stream.deprecations' ]
      processors: ~
      min_level: DEBUG

An arbitrary number of channels may be predefined, each with its own configuration. Configuration consists of which handlers (by service name) and processors (by service name) are desired. There's also the ability to set a minimum log level that the channel will care about. (I think; that may be on the handler level in Monolog. Still researching, but the above is the intent.)

A service may ask for a logger by name for injection ( ['@monolog.logger.mychannel]), or just ask for the generic "logger" service. If it does the latter, the channel to use is derived from the argument name. So a constructor parameter of $beepLogger will get the logger for the "beep" channel. If no beep channel is defined explicitly, it will get the same configuration as the default.

Per-class overrides are also possible, creating a virtual channel for just that class.

All that I still have not working is setting a minimum log level for each channel or handler, as I'm not sure that Monolog actually has a facility for that. I thought it did but I've not located it.

Actions

Also available in: Atom PDF