Allow MWLoggerMonologHandler to take prefix from channel
authorBryan Davis <bd808@wikimedia.org>
Sun, 22 Mar 2015 22:12:25 +0000 (16:12 -0600)
committerBryan Davis <bd808@wikimedia.org>
Sun, 22 Mar 2015 22:12:25 +0000 (16:12 -0600)
Make MWLoggerMonologHandler replace a prefix of "{channel}" with the log
event channel when formatting an event for a udp2log stream. This allows
a simpler configuration for a typical Monolog configuration where
a separate file is desired for each logging channel that is emitted to
udp2log. One handler can be shared by multiple channels.

Change-Id: Ie2b24ba02b281b8d8cf2ad58d28874c710e1e2e5

includes/debug/logger/monolog/Handler.php

index a872d84..9e7678d 100644 (file)
@@ -30,7 +30,8 @@
  * - HOST: IPv4, IPv6 or hostname
  * - PORT: server port
  * - PREFIX: optional (but recommended) prefix telling udp2log how to route
- * the log event
+ * the log event. The special prefix "{channel}" will use the log event's
+ * channel as the prefix value.
  *
  * When not targeting a udp2log stream this class will act as a drop-in
  * replacement for Monolog's StreamHandler.
@@ -194,7 +195,9 @@ class MWLoggerMonologHandler extends \Monolog\Handler\AbstractProcessingHandler
 
                        // Clean it up for the multiplexer
                        if ( $this->prefix !== '' ) {
-                               $text = preg_replace( '/^/m', "{$this->prefix} ", $text );
+                               $leader = ( $this->prefix === '{channel}' ) ?
+                                       $record['channel'] : $this->prefix;
+                               $text = preg_replace( '/^/m', "{$leader} ", $text );
 
                                // Limit to 64KB
                                if ( strlen( $text ) > 65506 ) {