Add Monolog formatter that mimics legacy log output
authorBryan Davis <bd808@wikimedia.org>
Fri, 21 Nov 2014 00:22:37 +0000 (17:22 -0700)
committerBryan Davis <bd808@wikimedia.org>
Fri, 21 Nov 2014 00:45:20 +0000 (17:45 -0700)
Having a log formatter for the Monolog stack that mimics the legacy wf*
logging function output will ease the transition for users wishing to
use Monolog who have tooling that expects the legacy log formats.

Bug: T845
Change-Id: I06295ccc4b068c61d7971024213366004b69c03d

autoload.php
includes/debug/logger/legacy/Logger.php
includes/debug/logger/monolog/LegacyFormatter.php [new file with mode: 0644]

index 091ba23..e017530 100644 (file)
@@ -681,6 +681,7 @@ $wgAutoloadLocalClasses = array(
        'MWLoggerLegacyLogger' => __DIR__ . '/includes/debug/logger/legacy/Logger.php',
        'MWLoggerLegacySpi' => __DIR__ . '/includes/debug/logger/legacy/Spi.php',
        'MWLoggerMonologHandler' => __DIR__ . '/includes/debug/logger/monolog/Handler.php',
+       'MWLoggerMonologLegacyFormatter' => __DIR__ . '/includes/debug/logger/monolog/LegacyFormatter.php',
        'MWLoggerMonologProcessor' => __DIR__ . '/includes/debug/logger/monolog/Processor.php',
        'MWLoggerMonologSpi' => __DIR__ . '/includes/debug/logger/monolog/Spi.php',
        'MWLoggerNullSpi' => __DIR__ . '/includes/debug/logger/NullSpi.php',
index c6d915e..8c0495a 100644 (file)
@@ -130,7 +130,7 @@ class MWLoggerLegacyLogger extends \Psr\Log\AbstractLogger {
         * @param array $context
         * @return string
         */
-       protected static function format( $channel, $message, $context ) {
+       public static function format( $channel, $message, $context ) {
                global $wgDebugLogGroups;
 
                if ( $channel === 'wfDebug' ) {
diff --git a/includes/debug/logger/monolog/LegacyFormatter.php b/includes/debug/logger/monolog/LegacyFormatter.php
new file mode 100644 (file)
index 0000000..11dbc82
--- /dev/null
@@ -0,0 +1,45 @@
+<?php
+/**
+ * @section LICENSE
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+
+/**
+ * Log message formatter that mimics the legacy log message formatting of
+ * `wfDebug`, `wfDebugLog`, `wfLogDBError` and `wfErrorLog` global functions by
+ * deligating the formatting to MWLoggerLegacyLogger.
+ *
+ * @since 1.25
+ * @author Bryan Davis <bd808@wikimedia.org>
+ * @copyright © 2013 Bryan Davis and Wikimedia Foundation.
+ * @see MWLoggerLegacyLogger
+ */
+class MWLoggerMonologLegacyFormatter extends \Monolog\Formatter\NormalizerFormatter {
+
+       public function __construct() {
+               parent::__construct( 'c' );
+       }
+
+       public function format( array $record ) {
+               $normalized = parent::format( $record );
+               return MWLoggerLegacyLogger::format(
+                       $normalized['channel'], $normalized['message'], $normalized
+               );
+       }
+}