flowpack / monolog
Monolog integration for Flow
Installs: 19 877
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
Type:neos-package
Requires
- ext-json: *
- monolog/monolog: ^2.3 || ^3.0
- neos/flow: ^7.3 || ^8.0
README
Provides a monolog factory to be used with Flow.
❗
This package replaces all Neos Flow logs (Security, System, Query, I18n) with Monolog by default. To change that and the handlers check the Settings.yaml. See also configuration notes below.
👻
The monolog format is slightly different than the default Flow log file format, also the configured monolog handler does no log rotation like the Flow log does, so you need to take care of that.
Installation
Use composer to install this package:
composer require flowpack/monolog
All Framework logs should now be in monolog format and you need to add configuration for any other logs you might want.
Configuration
You have several ways to configure monolog with this package, the easiest is seen in the configuration for the Neos Flow logs in this package:
Neos: Flow: log: psr3: 'Flowpack\Monolog\LoggerFactory': # name of the logger as Flow addresses it, eg. "systemLogger" '<name of the logger>': handler: # unique name for this handler in this log, for extending the configuration '<identifier for this handler>': className: '<monolog compatible handler class name fully qualified>' # sorting for this handler if you want it deterministic with overwrites position: 100 # arguments given to the handler, zero index based, as the handler constructor expects them arguments: 0: '<the first argument given to the constructor of the handler>' # another handler could follow here
Another option is to create preset handlers, e.g. if you need to use the same handler with the same configuration in multiple places, no overrides of this default configuration is possible at this time:
Flowpack: Monolog: handler: # unique identifier of this handler (preset) '<presetName>': className: '<monolog compatible handler class name fully qualified>' # note that preset handlers currently cannot have a position, they are sorted as configured # arguments given to the handler, zero index based, as the handler constructor expects them arguments: 0: '<the first argument given to the constructor of the handler>' Neos: Flow: log: psr3: 'Flowpack\Monolog\LoggerFactory': # name of the logger as Flow addresses it '<name of the logger>': handler: # the presetName should be the same as in above preset configuration '<identifier for this handler>': '<presetName>'
⚠️ Note that using presets does not work for loggers needed early in the bootstrap, as the settings for the Flowpack.Monolog package itself are injected rather late and the preset is only available afterwards.
Handlers
For more information about handlers and their configuration check also the monolog documentation on handlers, formatters & processors.
Formatters
To add a formatter to a handler, configure it like this:
Neos: Flow: log: psr3: 'Flowpack\Monolog\LoggerFactory': '<name of the logger>': handler: '<identifier for this handler>': className: '<monolog compatible handler class name fully qualified>' arguments: 0: '<the first argument given to the constructor of the handler>' # any formatter compatible with monolog formatterClassName: '<monolog compatible formatter class name fully qualified>' # optional arguments for the formatter formatterArguments: 0: '<the first argument given to the constructor of the formatter>'
For this to work the used handler must implement monolog's FormattableHandlerInterface
.
For more information about formatters and their configuration check also the monolog documentation on handlers, formatters & processors.