Przeglądaj źródła

Added memory processors

Rob Jensen 14 lat temu
rodzic
commit
c0cfb39d75

+ 23 - 0
src/Monolog/Processor/AbstractProcessor.php

@@ -0,0 +1,23 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Processor;
+
+/**
+ * Basic processor class
+ * @author Rob Jensen
+ */
+abstract class AbstractProcessor
+{
+
+    abstract public function __invoke( array $record );
+
+}

+ 43 - 0
src/Monolog/Processor/MemoryPeakUsageProcessor.php

@@ -0,0 +1,43 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Processor;
+
+use Monolog\Processor\MemoryProcessor;
+
+/**
+ * Injects memory_get_peak_usage in all records
+ * 
+ * @see Monolog\Processor\MemoryProcessor__construct() for options
+ * @author Rob Jensen
+ */
+class MemoryPeakUsageProcessor extends MemoryProcessor
+{
+
+    /**
+     * @param array $record
+     * @return array
+     */
+    public function __invoke(array $record)
+    {
+        $bytes = memory_get_peak_usage( $this->realUsage );
+        $formatted = MemoryProcessor::formatBytes( $bytes );
+
+        $record['extra'] = array_merge(
+            $record['extra'],
+            array(
+                'memory_peak_usage' => $formatted,
+            )
+        );
+
+        return $record;
+    }
+}

+ 55 - 0
src/Monolog/Processor/MemoryProcessor.php

@@ -0,0 +1,55 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Processor;
+
+/**
+ * Some methods that are common for all memory processors
+ * @author Rob Jensen
+ */
+abstract class MemoryProcessor extends AbstractProcessor
+{
+
+    protected $realUsage;
+
+    /**
+     * @param array $options
+     */
+    public function __construct( $options = array() )
+    {
+        if(array_key_exists('realUsage', $options )){
+            $this->realUsage = (boolean) $options['realUsage'];
+        } else {
+            $this->realUsage = true;
+        }
+    }
+
+    /**
+     * Formats bytes into a human readable string
+     *
+     * @param int $bytes
+     * @return string
+     */
+    public static function formatBytes( $bytes )
+    {
+        $bytes = (int) $bytes;
+        if ($bytes > 1024*1024) {
+            $bytes = round($bytes/1024/1024, 2).' MB';
+        } else if ($bytes > 1024) {
+            $bytes = round($bytes/1024, 2).' KB';
+        } else {
+            $bytes .= ' B';
+        }
+
+        return $bytes;
+    }
+
+}

+ 42 - 0
src/Monolog/Processor/MemoryUsageProcessor.php

@@ -0,0 +1,42 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Processor;
+
+use Monolog\Processor\MemoryProcessor;
+
+/**
+ * Injects memory_get_usage in all records
+ * @see Monolog\Processor\MemoryProcessor__construct() for options
+ * @author Rob Jensen
+ */
+class MemoryUsageProcessor extends MemoryProcessor
+{
+
+    /**
+     * @param array $record
+     * @return array
+     */
+    public function __invoke(array $record)
+    {
+        $bytes = memory_get_usage( $this->realUsage );
+        $formatted = MemoryProcessor::formatBytes( $bytes );
+
+        $record['extra'] = array_merge(
+            $record['extra'],
+            array(
+                'memory_usage' => $formatted,
+            )
+        );
+
+        return $record;
+    }
+}