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

Reply via email to