WPCLIHandler
MHCG\Monolog\Handler\WPCLIHandler is a Monolog handler that forwards log records to WP-CLI output methods.
Runtime constraints
- Intended for WP-CLI execution.
- Constructor throws
RuntimeExceptionwhen WP-CLI runtime is not detected.
Constructor
new WPCLIHandler($level = Level::Warning, $bubble = true, $verbose = false, ?array $loggerMap = null)$level: minimum logging level for handler triggering. Accepts a MonologLevelenum case, level name string, or legacy integer level value.$bubble: whether records continue to other handlers.$verbose: enables verbose formatter output (also enabled byWP_DEBUG).$loggerMap: optional per-level overrides merged over the default logger map.
When supplied, $loggerMap is merged over getDefaultLoggerMap() so callers only need to provide the levels they want to change. Invalid overrides are rejected in the constructor.
Each map entry uses this shape:
[
Level::Notice->value => [
'method' => 'log',
'includeLevelName' => true,
],
Level::Error->value => [
'method' => 'error',
'includeLevelName' => true,
'exit' => false,
],
]Map keys may use Monolog Level enum cases, level name strings (for example 'warning'), or integer level values. Entries are normalised before validation.
Default formatter behaviour
- Standard format:
%message% - Verbose format:
%message% %context% %extra%
That means Monolog context and extra data are not shown in standard output. They are only rendered when verbose output is enabled.
Verbose output is enabled when either:
WP_DEBUGis enabled, or- constructor
$verboseistrue
Example verbose output from the WordPress integration smoke fixture:
(NOTICE) context from wp {"foo":"bar"} []In this output shape, the trailing [] is Monolog extra data when no extra keys are present.
Default Monolog-to-WP-CLI mapping
| Monolog level | WP-CLI method | includeLevelName | exit |
|---|---|---|---|
| DEBUG | debug | no | n/a |
| INFO | log | no | n/a |
| NOTICE | log | yes | n/a |
| WARNING | warning | yes | n/a |
| ERROR | error | yes | false |
| CRITICAL | error | yes | true |
| ALERT | error | yes | true |
| EMERGENCY | error | yes | true |
Handling behaviour
DEBUGis always considered handleable byisHandling; WP-CLI decides visibility through--debug.- Unsupported or invalid mapped levels are rejected by logger-map validation.
exit=trueis only valid when mapped method iserror.
Public static methods
getDefaultLoggerMap(): arraygetSupportedLevels(array $map): arrayvalidateAllLoggerMapEntries(array $map): voidvalidateLoggerMap(array $map, int|string|Level $level, string $levelName = '')normalizeLevel(int|string|Level $level): intgetLevelName(int|string|Level $level): stringtoMonologLevel(int|string|Level $level): ?Level
Constants
WP_CLI_FORMAT_STANDARD:"%message%"WP_CLI_FORMAT_VERBOSE:"%message% %context% %extra%"