Bläddra i källkod

Merge pull request #727 from greg0ire/set_release_for_all_logs

add release number to every log
Jordi Boggiano 10 år sedan
förälder
incheckning
fb314292ab
2 ändrade filer med 36 tillägg och 0 borttagningar
  1. 20 0
      src/Monolog/Handler/RavenHandler.php
  2. 16 0
      tests/Monolog/Handler/RavenHandlerTest.php

+ 20 - 0
src/Monolog/Handler/RavenHandler.php

@@ -38,6 +38,12 @@ class RavenHandler extends AbstractProcessingHandler
         Logger::EMERGENCY => Raven_Client::FATAL,
     );
 
+    /**
+     * @var string should represent the current version of the calling
+     *             software. Can be any string (git commit, version number)
+     */
+    private $release;
+
     /**
      * @var Raven_Client the client object that sends the message to the server
      */
@@ -169,6 +175,10 @@ class RavenHandler extends AbstractProcessingHandler
             $options['extra']['extra'] = $record['extra'];
         }
 
+        if (!empty($this->release) && !isset($options['release'])) {
+            $options['release'] = $this->release;
+        }
+
         if (isset($record['context']['exception']) && $record['context']['exception'] instanceof \Exception) {
             $options['extra']['message'] = $record['formatted'];
             $this->ravenClient->captureException($record['context']['exception'], $options);
@@ -208,4 +218,14 @@ class RavenHandler extends AbstractProcessingHandler
     {
         return array('checksum', 'release');
     }
+
+    /**
+     * @param string $value
+     */
+    public function setRelease($value)
+    {
+        $this->release = $value;
+
+        return $this;
+    }
 }

+ 16 - 0
tests/Monolog/Handler/RavenHandlerTest.php

@@ -204,6 +204,22 @@ class RavenHandlerTest extends TestCase
         $this->assertSame($formatter, $handler->getBatchFormatter());
     }
 
+    public function testRelease()
+    {
+        $ravenClient = $this->getRavenClient();
+        $handler = $this->getHandler($ravenClient);
+        $release = 'v42.42.42';
+        $handler->setRelease($release);
+        $record = $this->getRecord(Logger::INFO, 'test');
+        $handler->handle($record);
+        $this->assertEquals($release, $ravenClient->lastData['release']);
+
+        $localRelease = 'v41.41.41';
+        $record = $this->getRecord(Logger::INFO, 'test', array('release' => $localRelease));
+        $handler->handle($record);
+        $this->assertEquals($localRelease, $ravenClient->lastData['release']);
+    }
+
     private function methodThatThrowsAnException()
     {
         throw new \Exception('This is an exception');