Page MenuHomePhabricator

Upgrade monolog/monolog to 3.9.0 or later
Open, In Progress, MediumPublic

Description

reedy@ubuntu64-web-esxi:/var/www/wiki/mediawiki/vendor$ php8.1 `which composer` depends monolog/monolog
__root__           dev-master requires monolog/monolog (2.9.3)
wikimedia/shellbox 4.3.0      requires monolog/monolog (^2.0.0)

Details

Related Changes in Gerrit:
SubjectAuthorRepoBranchLines +/-
Jforrestermediawiki/coremaster+12 -12
Jforrestermediawiki/coremaster+28 -2
BryanDavismediawiki/extensions/GoogleLoginmaster+1 -2
Jforrestermediawiki/coremaster+1 -70
Jforrestermediawiki/coremaster+63 -113
Jforresteroperations/mediawiki-configmaster+7 -7
Gergő Tiszamediawiki/vagrantmaster+0 -6
Jforrestermediawiki/coremaster+70 -1
Jforrestermediawiki/coremaster+105 -0
Jforrestermediawiki/coremaster+83 -0
Jforrestermediawiki/coremaster+204 -0
Jforrestermediawiki/coremaster+52 -0
Jforrestermediawiki/coremaster+111 -14
Jforrestermediawiki/coremaster+76 -0
Jforrestermediawiki/coremaster+142 -17
BryanDavismediawiki/coremaster+8 -6
Jforrestermediawiki/libs/Shellboxmaster+2 -2
Jforrestermediawiki/libs/Shellboxmaster+3 -0
Jforrestermediawiki/coremaster+154 -3
Jforrestermediawiki/vendormaster+3 K -3 K
Jforrestermediawiki/coremaster+13 -1
Umherirrendermediawiki/extensions/WikimediaEventsmaster+2 -1
Umherirrendermediawiki/coremaster+14 -7
Umherirrendermediawiki/coremaster+2 -1
Umherirrendermediawiki/extensions/DonationInterfacemaster+2 -1
Umherirrendermediawiki/extensions/EventBusmaster+2 -4
Jforrestermediawiki/libs/Shellboxmaster+40 -0
Reedymediawiki/libs/Shellboxmaster+69 -44
Show related patches Customize query in gerrit

Event Timeline

Change #1235415 had a related patch set uploaded (by Reedy; author: Reedy):

[mediawiki/libs/Shellbox@master] composer.json: Re-allow monolog/monolog ^3.0.0

https://gerrit.wikimedia.org/r/1235415

Change #1235415 merged by jenkins-bot:

[mediawiki/libs/Shellbox@master] composer.json: Upgrade to monolog/monolog ^3.0.0

https://gerrit.wikimedia.org/r/1235415

Change #1286347 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/libs/Shellbox@master] Release v4.5.0

https://gerrit.wikimedia.org/r/1286347

Change #1286347 merged by jenkins-bot:

[mediawiki/libs/Shellbox@master] Release v4.5.0

https://gerrit.wikimedia.org/r/1286347

Change #1286350 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/libs/Shellbox@master] Expand monolog/monolog support to ^2.0.0 || ^3.0.0

https://gerrit.wikimedia.org/r/1286350

Change #1286351 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/libs/Shellbox@master] Release v4.5.1

https://gerrit.wikimedia.org/r/1286351

The signature of AbstractProcessingHandler::write changed in v3 (https://github.com/Seldaek/monolog/commit/22c8b19358e916c52f1d2170d44e172152de7c25#diff-374a6357e3f89f4b70f66a1606f8bd74c7e2bd39dce237578d134d86beb420c1)

The explicit type declaration needs to be removed, because the new LogRecord implements ArrayAccess and everything should still work?

Fatal error: Declaration of MediaWiki\Logger\Monolog\LegacyHandler::write(array $record): void must be compatible with Monolog\Handler\AbstractProcessingHandler::write(Monolog\LogRecord $record): void
Fatal error: Declaration of MediaWiki\Extension\EventBus\Adapters\Monolog\EventBusMonologHandler::write(array $record): void must be compatible with Monolog\Handler\AbstractProcessingHandler::write(Monolog\LogRecord $record): void
Fatal error: Declaration of MediaWikiLogHandler::write(array $record): void must be compatible with Monolog\Handler\AbstractProcessingHandler::write(Monolog\LogRecord $record): void

https://codesearch.wmcloud.org/search/?q=AbstractProcessingHandler

Change #1296010 had a related patch set uploaded (by Umherirrender; author: Umherirrender):

[mediawiki/core@master] Forward compatibility change for AbstractProcessingHandler on monolog v3

https://gerrit.wikimedia.org/r/1296010

Change #1296011 had a related patch set uploaded (by Umherirrender; author: Umherirrender):

[mediawiki/extensions/DonationInterface@master] Forward compatibility change for AbstractProcessingHandler on monolog v3

https://gerrit.wikimedia.org/r/1296011

Change #1296012 had a related patch set uploaded (by Umherirrender; author: Umherirrender):

[mediawiki/extensions/EventBus@master] Forward compatibility change for AbstractProcessingHandler on monolog v3

https://gerrit.wikimedia.org/r/1296012

Change #1296012 merged by jenkins-bot:

[mediawiki/extensions/EventBus@master] Forward compatibility change for AbstractProcessingHandler on monolog v3

https://gerrit.wikimedia.org/r/1296012

Change #1296011 merged by jenkins-bot:

[mediawiki/extensions/DonationInterface@master] Forward compatibility change for AbstractProcessingHandler on monolog v3

https://gerrit.wikimedia.org/r/1296011

Change #1296010 merged by jenkins-bot:

[mediawiki/core@master] Forward compatibility change for AbstractProcessingHandler on monolog v3

https://gerrit.wikimedia.org/r/1296010

Change #1297637 had a related patch set uploaded (by Umherirrender; author: Umherirrender):

[mediawiki/core@master] Forward compatibility change for log formatter/buffer on monolog v3

https://gerrit.wikimedia.org/r/1297637

Change #1298410 had a related patch set uploaded (by Umherirrender; author: Umherirrender):

[mediawiki/extensions/WikimediaEvents@master] Forward compatibility change for AuthManagerStatsdHandler on monolog v3

https://gerrit.wikimedia.org/r/1298410

Change #1298410 merged by jenkins-bot:

[mediawiki/extensions/WikimediaEvents@master] Forward compatibility change for AuthManagerStatsdHandler on monolog v3

https://gerrit.wikimedia.org/r/1298410

Change #1297637 merged by jenkins-bot:

[mediawiki/core@master] Forward compatibility change for log formatter/buffer on monolog v3

https://gerrit.wikimedia.org/r/1297637

Change #1298872 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/vendor@master] Upgrade monolog/monolog from v2.11.0 to v3.10.0

https://gerrit.wikimedia.org/r/1298872

Change #1298873 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/core@master] Upgrade monolog/monolog from v2.11.0 to v3.10.0

https://gerrit.wikimedia.org/r/1298873

Change #1298900 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/core@master] logger: Make LogstashFormatter::format() accept array or LogRecord

https://gerrit.wikimedia.org/r/1298900

Jdforrester-WMF changed the task status from Open to In Progress.Jun 8 2026, 9:22 PM
Jdforrester-WMF claimed this task.
Jdforrester-WMF triaged this task as Medium priority.

Change #1298916 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/core@master] logger: Soft-deprecate passing arrays to Monolog handlers/formatters

https://gerrit.wikimedia.org/r/1298916

Change #1298917 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/core@master] logger: Replace deprecated Monolog\Logger level constants with Level enum

https://gerrit.wikimedia.org/r/1298917

Change #1298918 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/core@master] logger: Require LogRecord (not array) for Monolog handlers/formatters

https://gerrit.wikimedia.org/r/1298918

Change #1298900 merged by jenkins-bot:

[mediawiki/core@master] logger: Make LogstashFormatter::format() accept array or LogRecord

https://gerrit.wikimedia.org/r/1298900

Change #1298872 merged by jenkins-bot:

[mediawiki/vendor@master] Upgrade monolog/monolog from v2.11.0 to v3.10.0

https://gerrit.wikimedia.org/r/1298872

Change #1298873 merged by jenkins-bot:

[mediawiki/core@master] Upgrade monolog/monolog from v2.11.0 to v3.10.0

https://gerrit.wikimedia.org/r/1298873

Change #1307322 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/core@master] logger: Accept Monolog 3 LogRecord in the Wiki and Context processors

https://gerrit.wikimedia.org/r/1307322

Change #1307323 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/core@master] logger: Fix LineFormatter dropping private/exception context under Monolog 3

https://gerrit.wikimedia.org/r/1307323

Change #1307326 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/core@master] logger: Cover LogstashFormatter V0 output and exception normalisation

https://gerrit.wikimedia.org/r/1307326

Change #1307327 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/core@master] logger: Add LegacyHandler coverage for sink parsing and writes

https://gerrit.wikimedia.org/r/1307327

Change #1307328 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/core@master] logger: Cover SyslogHandler RFC 3164 header construction

https://gerrit.wikimedia.org/r/1307328

Change #1307329 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/core@master] logger: Cover LegacyFormatter and BufferHandler

https://gerrit.wikimedia.org/r/1307329

Change #1307330 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/core@master] logger: Add end-to-end MonologSpi pipeline test

https://gerrit.wikimedia.org/r/1307330

Change #1286351 abandoned by Jforrester:

[mediawiki/libs/Shellbox@master] Release v4.5.1

https://gerrit.wikimedia.org/r/1286351

Change #1286350 abandoned by Jforrester:

[mediawiki/libs/Shellbox@master] Expand monolog/monolog support to ^2.0.0 || ^3.0.0

https://gerrit.wikimedia.org/r/1286350

This typing error from https://beta-update.wmcloud.org/202607031540.log seems likely related:

15:44:17] Running update.php for 47 wikis.
[15:44:17] commonswiki | MediaWiki 1.47.0-alpha Updater
[15:44:17] commonswiki | 
[15:44:17] commonswiki | Your composer.lock file is up to date with current dependencies!
[15:44:17] commonswiki | Going to run database updates for commonswiki
[15:44:17] commonswiki | Depending on the size of your database this may take a while!
[15:44:17] commonswiki | Fatal error: Uncaught TypeError: MediaWiki\Logger\Monolog\WikiProcessor::__invoke(): Argument #1 ($record) must be of type array, Monolog\LogRecord given, called in /srv/mediawiki-staging/php-master/vendor/monolog/monolog/src/Monolog/Logger.php on line 378 and defined in /srv/mediawiki-staging/php-master/includes/Logger/Monolog/WikiProcessor.php:26
[15:44:17] commonswiki | Stack trace:
[15:44:17] commonswiki | #0 /srv/mediawiki-staging/php-master/vendor/monolog/monolog/src/Monolog/Logger.php(378): MediaWiki\Logger\Monolog\WikiProcessor->__invoke(Object(Monolog\LogRecord))
[15:44:17] commonswiki | #1 /srv/mediawiki-staging/php-master/vendor/monolog/monolog/src/Monolog/Logger.php(646): Monolog\Logger->addRecord(Object(Monolog\Level), '[{reqId}] {exce...', Array)
[15:44:17] commonswiki | #2 /srv/mediawiki-staging/php-master/includes/Exception/MWExceptionHandler.php(653): Monolog\Logger->error('[{reqId}] {exce...', Array)
[15:44:17] commonswiki | #3 /srv/mediawiki-staging/php-master/includes/Exception/MWExceptionHandler.php(185): MediaWiki\Exception\MWExceptionHandler::logException(Object(TypeError), 'mwe_handler')
[15:44:17] commonswiki | #4 /srv/mediawiki-staging/php-master/includes/Exception/MWExceptionHandler.php(223): MediaWiki\Exception\MWExceptionHandler::rollbackPrimaryChangesAndLog(Object(TypeError), 'mwe_handler')
[15:44:17] commonswiki | #5 /srv/mediawiki-staging/php-master/includes/Exception/MWExceptionHandler.php(195): MediaWiki\Exception\MWExceptionHandler::handleException(Object(TypeError), 'mwe_handler')
[15:44:17] commonswiki | #6 [internal function]: MediaWiki\Exception\MWExceptionHandler::handleUncaughtException(Object(TypeError))
[15:44:17] commonswiki | #7 {main}
[15:44:17] commonswiki |   thrown in /srv/mediawiki-staging/php-master/includes/Logger/Monolog/WikiProcessor.php on line 26
[15:44:17] commonswiki | Fatal error: Uncaught TypeError: MediaWiki\Logger\Monolog\WikiProcessor::__invoke(): Argument #1 ($record) must be of type array, Monolog\LogRecord given, called in /srv/mediawiki-staging/php-master/vendor/monolog/monolog/src/Monolog/Logger.php on line 378 and defined in /srv/mediawiki-staging/php-master/includes/Logger/Monolog/WikiProcessor.php:26
[15:44:17] commonswiki | Stack trace:
[15:44:17] commonswiki | #0 /srv/mediawiki-staging/php-master/vendor/monolog/monolog/src/Monolog/Logger.php(378): MediaWiki\Logger\Monolog\WikiProcessor->__invoke(Object(Monolog\LogRecord))
[15:44:17] commonswiki | #1 /srv/mediawiki-staging/php-master/vendor/monolog/monolog/src/Monolog/Logger.php(646): Monolog\Logger->addRecord(Object(Monolog\Level), '[{reqId}] {exce...', Array)
[15:44:17] commonswiki | #2 /srv/mediawiki-staging/php-master/includes/Exception/MWExceptionHandler.php(379): Monolog\Logger->error('[{reqId}] {exce...', Array)
[15:44:17] commonswiki | #3 [internal function]: MediaWiki\Exception\MWExceptionHandler::handleFatalError()
[15:44:17] commonswiki | #4 {main}
[15:44:17] commonswiki |   thrown in /srv/mediawiki-staging/php-master/includes/Logger/Monolog/WikiProcessor.php on line 26
[15:44:17] Command failed (exit 255): /usr/local/bin/mwscript update.php --wiki=commonswiki --doshared --quick --skip-config-validation

The MediaWiki\Logger\Monolog\WikiProcessor class is trying to add some metadata to the log event. The current class expects an array as input instead of the Monolog\LogRecord object it is seeing at runtime. Monolog\LogRecord is new in Monolog 3.

Change #1307489 had a related patch set uploaded (by BryanDavis; author: Bryan Davis):

[mediawiki/core@master] monolog: Expect array|LogRecord for Monolog 3.x compat

https://gerrit.wikimedia.org/r/1307489

Change #1307489 abandoned by BryanDavis:

[mediawiki/core@master] monolog: Expect array|LogRecord for Monolog 3.x compat

Reason:

I8255e4d146ba750481d52c70ae38c7745f504752

https://gerrit.wikimedia.org/r/1307489

Change #1307322 merged by jenkins-bot:

[mediawiki/core@master] logger: Accept Monolog 3 LogRecord in the Wiki and Context processors

https://gerrit.wikimedia.org/r/1307322

Change #1307323 merged by jenkins-bot:

[mediawiki/core@master] logger: Fix LineFormatter dropping private/exception context under Monolog 3

https://gerrit.wikimedia.org/r/1307323

Change #1307326 merged by jenkins-bot:

[mediawiki/core@master] logger: Cover LogstashFormatter V0 output and exception normalisation

https://gerrit.wikimedia.org/r/1307326

Change #1307327 merged by jenkins-bot:

[mediawiki/core@master] logger: Add LegacyHandler coverage for sink parsing and writes

https://gerrit.wikimedia.org/r/1307327

Change #1307328 merged by jenkins-bot:

[mediawiki/core@master] logger: Cover SyslogHandler RFC 3164 header construction

https://gerrit.wikimedia.org/r/1307328

Change #1307329 merged by jenkins-bot:

[mediawiki/core@master] logger: Cover LegacyFormatter and BufferHandler

https://gerrit.wikimedia.org/r/1307329

Change #1307330 merged by jenkins-bot:

[mediawiki/core@master] logger: Add end-to-end MonologSpi pipeline test

https://gerrit.wikimedia.org/r/1307330

Change #1307506 had a related patch set uploaded (by Jforrester; author: Jforrester):

[operations/mediawiki-config@master] logging: Switch the wmfconfig processor to Monolog 3's type (LogRecord)

https://gerrit.wikimedia.org/r/1307506

Change #1307507 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/core@master] logger: Accept Monolog 2 array-typed processors under Monolog 3

https://gerrit.wikimedia.org/r/1307507

Change #1307508 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/core@master] Revert "logger: Accept Monolog 2 array-typed processors under Monolog 3"

https://gerrit.wikimedia.org/r/1307508

The MediaWiki\Logger\Monolog\WikiProcessor class is trying to add some metadata to the log event. The current class expects an array as input instead of the Monolog\LogRecord object it is seeing at runtime. Monolog\LogRecord is new in Monolog 3.

Yup, I've added a temporary hack into core in 1d5283662b18c85e98b9057ae41d5062938d7145 to deal with wmf-config's Monolog 2-ism; once the train fully deploys, we can land 3679399940019bb1dbb0161e095ff464cba542c8 in wmf-config and then revert it. (I should have thought to look for code in config rather than just MediaWiki land, ah well.)

Change #1307507 merged by jenkins-bot:

[mediawiki/core@master] logger: Accept Monolog 2 array-typed processors under Monolog 3

https://gerrit.wikimedia.org/r/1307507

Change #1298916 merged by jenkins-bot:

[mediawiki/core@master] logger: Temporarily use wfDeprecated() to hunt down any Monolog 2 usage left

https://gerrit.wikimedia.org/r/1298916

Change #1313247 had a related patch set uploaded (by Gergő Tisza; author: Gergő Tisza):

[mediawiki/vagrant@master] psr3: Drop monolog from composer.json

https://gerrit.wikimedia.org/r/1313247

Change #1313247 merged by Gergő Tisza:

[mediawiki/vagrant@master] psr3: Drop monolog from composer.json

https://gerrit.wikimedia.org/r/1313247

Change #1307506 merged by jenkins-bot:

[operations/mediawiki-config@master] logging: Switch the wmfconfig processor to Monolog 3's type (LogRecord)

https://gerrit.wikimedia.org/r/1307506

Mentioned in SAL (#wikimedia-operations) [2026-07-28T10:25:21Z] <jforrester@deploy1003> Started scap sync-world: Backport for [[gerrit:1307506|logging: Switch the wmfconfig processor to Monolog 3's type (LogRecord) (T397070)]]

Mentioned in SAL (#wikimedia-operations) [2026-07-28T10:27:34Z] <jforrester@deploy1003> jforrester: Backport for [[gerrit:1307506|logging: Switch the wmfconfig processor to Monolog 3's type (LogRecord) (T397070)]] synced to the testservers (see https://wikitech.wikimedia.org/wiki/Mwdebug). Changes can now be verified there.

Mentioned in SAL (#wikimedia-operations) [2026-07-28T10:34:54Z] <jforrester@deploy1003> Finished scap sync-world: Backport for [[gerrit:1307506|logging: Switch the wmfconfig processor to Monolog 3's type (LogRecord) (T397070)]] (duration: 09m 31s)

Change #1307508 merged by jenkins-bot:

[mediawiki/core@master] Revert "logger: Accept Monolog 2 array-typed processors under Monolog 3"

https://gerrit.wikimedia.org/r/1307508

Change #1319958 had a related patch set uploaded (by BryanDavis; author: BryanDavis):

[mediawiki/extensions/GoogleLogin@master] Expand monolog/monolog support to ^2.2.0||^3.0.0

https://gerrit.wikimedia.org/r/1319958

Change #1319958 merged by jenkins-bot:

[mediawiki/extensions/GoogleLogin@master] Expand monolog/monolog support to ^2.9||^3.0

https://gerrit.wikimedia.org/r/1319958

Change #1298917 merged by jenkins-bot:

[mediawiki/core@master] logger: Replace deprecated Monolog\Logger level constants with Level enum

https://gerrit.wikimedia.org/r/1298917