Skip to content

Commit 8349986

Browse files
55: upgrade the SDK to support Laravel 5.6 logging best practices
1 parent dade1c1 commit 8349986

File tree

4 files changed

+75
-212
lines changed

4 files changed

+75
-212
lines changed

src/Facades/Rollbar.php

Lines changed: 0 additions & 17 deletions
This file was deleted.

src/MonologHandler.php

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
<?php
2+
3+
namespace Rollbar\Laravel;
4+
5+
use Rollbar\Monolog\Handler\RollbarHandler;
6+
7+
class MonologHandler extends RollbarHandler
8+
{
9+
protected $app;
10+
11+
public function setApp($app)
12+
{
13+
$this->app = $app;
14+
}
15+
16+
protected function write(array $record)
17+
{
18+
$record['context'] = $this->addContext($record['context']);
19+
parent::write($record);
20+
}
21+
22+
/**
23+
* Add Laravel specific information to the context.
24+
*
25+
* @param array $context
26+
*/
27+
protected function addContext(array $context = [])
28+
{
29+
// Add session data.
30+
if ($session = $this->app->session->all()) {
31+
$config = $this->rollbarLogger->extend([]);
32+
33+
if (empty($config['person']) or ! is_array($config['person'])) {
34+
$person = [];
35+
} else {
36+
$person = $config['person'];
37+
}
38+
39+
// Merge person context.
40+
if (isset($context['person']) and is_array($context['person'])) {
41+
$person = $context['person'];
42+
unset($context['person']);
43+
} else {
44+
if (isset($config['person_fn']) && is_callable($config['person_fn'])) {
45+
$data = @call_user_func($config['person_fn']);
46+
if (isset($data['id'])) {
47+
$person = call_user_func($config['person_fn']);
48+
}
49+
}
50+
}
51+
52+
// Add user session information.
53+
if (isset($person['session'])) {
54+
$person['session'] = array_merge($session, $person['session']);
55+
} else {
56+
$person['session'] = $session;
57+
}
58+
59+
// User session id as user id if not set.
60+
if (! isset($person['id'])) {
61+
$person['id'] = $this->app->session->getId();
62+
}
63+
64+
$this->rollbarLogger->configure(['person' => $person]);
65+
}
66+
67+
return $context;
68+
}
69+
}

src/RollbarLogHandler.php

Lines changed: 0 additions & 150 deletions
This file was deleted.

src/RollbarServiceProvider.php

Lines changed: 6 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
use InvalidArgumentException;
44
use Illuminate\Support\Facades\Config;
55
use Illuminate\Support\ServiceProvider;
6-
use Rollbar\Laravel\RollbarLogHandler;
6+
use Rollbar\Laravel\MonologHandler;
77
use Rollbar\RollbarLogger;
88
use Rollbar\Rollbar;
99

@@ -16,48 +16,6 @@ class RollbarServiceProvider extends ServiceProvider
1616
*/
1717
protected $defer = false;
1818

19-
/**
20-
* Bootstrap the application events.
21-
*/
22-
public function boot()
23-
{
24-
// Don't boot rollbar if it is not configured.
25-
if ($this->stop() === true) {
26-
return;
27-
}
28-
29-
$app = $this->app;
30-
31-
// Listen to log messages.
32-
$app['log']->listen(function () use ($app) {
33-
$args = func_get_args();
34-
35-
// Laravel 5.4 returns a MessageLogged instance only
36-
if (count($args) == 1) {
37-
$level = $args[0]->level;
38-
$message = $args[0]->message;
39-
$context = $args[0]->context;
40-
} else {
41-
$level = $args[0];
42-
$message = $args[1];
43-
$context = $args[2];
44-
}
45-
46-
if (strpos($message, 'Unable to send messages to Rollbar API. Produced response: ') !== false) {
47-
return;
48-
}
49-
50-
$result = $app[RollbarLogHandler::class]->log($level, $message, $context);
51-
52-
if (!$result->getStatus()) {
53-
\Log::error(
54-
'Unable to send messages to Rollbar API. Produced response: ' .
55-
print_r($result, true)
56-
);
57-
}
58-
});
59-
}
60-
6119
/**
6220
* Register the service provider.
6321
*/
@@ -95,11 +53,14 @@ public function register()
9553
return Rollbar::logger();
9654
});
9755

98-
$this->app->singleton(RollbarLogHandler::class, function ($app) {
56+
$this->app->singleton(MonologHandler::class, function ($app) {
9957

10058
$level = static::config('level', 'debug');
59+
60+
$handler = new MonologHandler($app[RollbarLogger::class], $level);
61+
$handler->setApp($app);
10162

102-
return new RollbarLogHandler($app[RollbarLogger::class], $app, $level);
63+
return $handler;
10364
});
10465
}
10566

0 commit comments

Comments
 (0)