jenkins-bot has submitted this change and it was merged. Change subject: Vagrant role for convenient enabling of PSR-3 logging ......................................................................
Vagrant role for convenient enabling of PSR-3 logging Tries to juggle a few goals: * keep logging conventions reasonably similar to the default MediaWiki-Vagrant config; keep logging-related settings working * try to be reasonably close to the production config * minimize code duplication with the elk role Change-Id: I5b11aa4747b9daa8184e0bef76d2a06110facca7 --- M LocalSettings.php M puppet/modules/role/manifests/elk.pp A puppet/modules/role/manifests/psr3.pp M puppet/modules/role/templates/elk/monolog.php.erb A puppet/modules/role/templates/psr3/settings.php.erb 5 files changed, 136 insertions(+), 71 deletions(-) Approvals: BryanDavis: Looks good to me, approved Gergő Tisza: Looks good to me, but someone else must approve jenkins-bot: Verified diff --git a/LocalSettings.php b/LocalSettings.php index f227753..0328b77 100644 --- a/LocalSettings.php +++ b/LocalSettings.php @@ -113,3 +113,8 @@ // Allow 'vagrant' password. $wgPasswordPolicy['policies']['sysop']['MinimalPasswordLength'] = 7; $wgPasswordPolicy['policies']['bureaucrat']['MinimalPasswordLength'] = 7; + +// Ensure that full LoggerFactory configuration is applied +MediaWiki\Logger\LoggerFactory::registerProvider( + ObjectFactory::getObjectFromSpec( $wgMWLoggerDefaultSpi ) +); diff --git a/puppet/modules/role/manifests/elk.pp b/puppet/modules/role/manifests/elk.pp index d9e338c..efb4aca 100644 --- a/puppet/modules/role/manifests/elk.pp +++ b/puppet/modules/role/manifests/elk.pp @@ -11,6 +11,7 @@ $vhost_name, ){ require ::role::mediawiki + require ::role::psr3 include ::elasticsearch include ::redis include ::logstash @@ -71,15 +72,8 @@ } ## Configure MediaWiki - mediawiki::composer::require { 'monolog/monolog for elk role': - package => 'monolog/monolog', - version => '~1.11', - require => Php::Composer::Install[$::mediawiki::dir], - } - mediawiki::settings { 'Monolog': values => template('role/elk/monolog.php.erb'), - require => Mediawiki::Composer::Require['monolog/monolog for elk role'], } ## Configure rsyslog diff --git a/puppet/modules/role/manifests/psr3.pp b/puppet/modules/role/manifests/psr3.pp new file mode 100644 index 0000000..52236b0 --- /dev/null +++ b/puppet/modules/role/manifests/psr3.pp @@ -0,0 +1,16 @@ +# == Class: role::psr3 +# Sets up PSR-3 structured logging (similar to how it is done on Wikimedia wikis) +# +class role::psr3 { + mediawiki::composer::require { 'monolog/monolog for psr3 role': + package => 'monolog/monolog', + version => '~1.11', + } + + mediawiki::settings { 'psr3': # the elk role depends on this + priority => 1, + values => template('role/psr3/settings.php.erb'), + require => Mediawiki::Composer::Require['monolog/monolog for psr3 role'], + } +} + diff --git a/puppet/modules/role/templates/elk/monolog.php.erb b/puppet/modules/role/templates/elk/monolog.php.erb index 4adad2a..cd6d77a 100644 --- a/puppet/modules/role/templates/elk/monolog.php.erb +++ b/puppet/modules/role/templates/elk/monolog.php.erb @@ -1,68 +1,16 @@ +# <?php + $wgDebugTimestamps = false; $wgDBerrorLog = true; -$wgMWLoggerDefaultSpi = array( - 'class' => '\\MediaWiki\\Logger\\MonologSpi', - 'args' => array( array( - 'loggers' => array( - '@default' => array( - 'processors' => array( 'wiki', 'psr', 'pid', 'uid', 'web' ), - 'handlers' => array( 'default', 'syslog' ), - ), - 'wfDebug' => array( - 'handlers' => array( 'default' ), - 'processors' => array( 'psr' ), - ), - 'profileoutput' => array( - 'handlers' => array( 'profiler' ), - 'processors' => array( 'psr' ), - ), - ), - - 'processors' => array( - 'wiki' => array( - 'class' => '\\MediaWiki\\Logger\\Monolog\\WikiProcessor', - ), - 'psr' => array( - 'class' => '\\Monolog\\Processor\\PsrLogMessageProcessor', - ), - 'pid' => array( - 'class' => '\\Monolog\\Processor\\ProcessIdProcessor', - ), - 'uid' => array( - 'class' => '\\Monolog\\Processor\\UidProcessor', - ), - 'web' => array( - 'class' => '\\Monolog\\Processor\\WebProcessor', - ), - ), - - 'handlers' => array( - 'default' => array( - 'class' => '\\MediaWiki\\Logger\\Monolog\\LegacyHandler', - 'args' => array( '/vagrant/logs/monolog-'.date('Ymd').'.log' ), - ), - 'syslog' => array( - 'class' => '\\MediaWiki\\Logger\\Monolog\\SyslogHandler', - 'args' => array( 'mediawiki', '127.0.0.1', 10514 ), - 'formatter' => 'logstash', - ), - 'profiler' => array( - 'class' => '\\MediaWiki\\Logger\\Monolog\\LegacyHandler', - 'args' => array( '/vagrant/logs/profiler-'.date('Ymd').'.log' ), - 'formatter' => 'profiler', - ), - ), - - 'formatters' => array( - 'logstash' => array( - 'class' => '\\Monolog\\Formatter\\LogstashFormatter', - 'args' => array( 'mediawiki', php_uname( 'n' ), null, '', 1 ), - ), - 'profiler' => array( - 'class' => '\\Monolog\\Formatter\\LineFormatter', - 'args' => array( "%datetime% %message%\n\n", null, true, true ), - ), - ), - ) ), +$wgMWLoggerDefaultSpi['args'][0]['loggers']['@default']['handlers'][] = 'syslog'; +$wgMWLoggerDefaultSpi['args'][0]['handlers']['syslog'] = array( + 'class' => '\\MediaWiki\\Logger\\Monolog\\SyslogHandler', + 'args' => array( 'mediawiki', '127.0.0.1', 10514 ), + 'formatter' => 'logstash', ); +$wgMWLoggerDefaultSpi['args'][0]['formatters']['logstash'] = array( + 'class' => '\\Monolog\\Formatter\\LogstashFormatter', + 'args' => array( 'mediawiki', php_uname( 'n' ), null, '', 1 ), +); + diff --git a/puppet/modules/role/templates/psr3/settings.php.erb b/puppet/modules/role/templates/psr3/settings.php.erb new file mode 100644 index 0000000..fb8478a --- /dev/null +++ b/puppet/modules/role/templates/psr3/settings.php.erb @@ -0,0 +1,102 @@ +# <?php +call_user_func( function() { + global $wgMWLoggerDefaultSpi, $wgDebugLogFile, $wgDebugLogGroups; + + $wgMWLoggerDefaultSpi = array( + 'class' => '\\MediaWiki\\Logger\\MonologSpi', + 'args' => array( array( + 'loggers' => array( + '@default' => array( + 'processors' => array( 'wiki', 'psr', 'pid', 'uid', 'web' ), + 'handlers' => array( 'default' ), + ), + 'runJobs' => array( + 'processors' => array( 'wiki', 'psr', 'pid' ), + 'handlers' => array( 'default' ), + ), + 'profileoutput' => array( + 'handlers' => array( 'profiler' ), + 'processors' => array( 'psr' ), + ), + 'error-json' => array( + 'handlers' => array( 'blackhole' ), + ), + 'exception-json' => array( + 'handlers' => array( 'blackhole' ), + ), + 'fatal-json' => array( + 'handlers' => array( 'blackhole' ), + ), + ), + 'processors' => array( + 'wiki' => array( + 'class' => '\\MediaWiki\\Logger\\Monolog\\WikiProcessor', + ), + 'psr' => array( + 'class' => '\\Monolog\\Processor\\PsrLogMessageProcessor', + ), + 'pid' => array( + 'class' => '\\Monolog\\Processor\\ProcessIdProcessor', + ), + 'uid' => array( + 'class' => '\\Monolog\\Processor\\UidProcessor', + ), + 'web' => array( + 'class' => '\\Monolog\\Processor\\WebProcessor', + ), + ), + 'handlers' => array( + 'default' => array( + 'class' => '\\Monolog\\Handler\\StreamHandler', + 'args' => array( $wgDebugLogFile ?: '/vagrant/logs/mediawiki-' . wfWikiID() . '-debug.log' ), + 'formatter' => 'line', + ), + 'blackhole' => array( + 'class' => '\\Monolog\\Handler\\NullHandler', + ), + 'profiler' => array( + 'class' => '\\Monolog\\Handler\\StreamHandler', + 'args' => array( '/vagrant/logs/mediawiki-' . wfWikiID() . '-profiler.log' ), + 'formatter' => 'profiler', + ), + ), + 'formatters' => array( + 'line' => array( + 'class' => '\\MediaWiki\\Logger\\Monolog\\LineFormatter', + 'args' => array( + "%datetime% %extra.wiki% %channel% %level_name%: %message% %context% %exception%\n", + 'Y-m-d H:i:s', + true, // allowInlineLineBreaks + true, // ignoreEmptyContextAndExtra + true, // includeStacktraces + ), + ), + 'profiler' => array( + 'class' => '\\Monolog\\Formatter\\LineFormatter', + 'args' => array( "%datetime% %message%\n\n", null, true, true ), + ), + ), + ) ), + ); + + foreach ( $wgDebugLogGroups as $group => $target ) { + if ( is_array( $target ) ) { + // advanced settings like sample rate are ignored + $target = $target['destination']; + } + if ( !$target ) { + $wgMWLoggerDefaultSpi['args'][0]['loggers'][$group] = array( 'blackhole' ); + continue; + } + $wgMWLoggerDefaultSpi['args'][0]['loggers'][$group] = array( + 'processors' => array( 'wiki', 'psr', 'pid', 'uid', 'web' ), + 'handlers' => array( $group ), + ); + $wgMWLoggerDefaultSpi['args'][0]['handlers'][$group] = array( + 'class' => '\\Monolog\\Handler\\StreamHandler', + 'args' => array( $target ), + 'formatter' => 'line', + ); + } + +} ); -- To view, visit https://gerrit.wikimedia.org/r/218291 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I5b11aa4747b9daa8184e0bef76d2a06110facca7 Gerrit-PatchSet: 15 Gerrit-Project: mediawiki/vagrant Gerrit-Branch: master Gerrit-Owner: Gergő Tisza <gti...@wikimedia.org> Gerrit-Reviewer: BryanDavis <bda...@wikimedia.org> Gerrit-Reviewer: Dduvall <dduv...@wikimedia.org> Gerrit-Reviewer: Gergő Tisza <gti...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits