Skip to content

Commit 73a9c45

Browse files
committed
Fix missing user attributes on logs
1 parent 3b9eff4 commit 73a9c45

3 files changed

Lines changed: 45 additions & 11 deletions

File tree

src/Logs/LogsAggregator.php

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -73,17 +73,9 @@ public function add(
7373
}
7474

7575
$log = (new Log($timestamp, $this->getTraceId($hub), $level, $formattedMessage))
76-
->setAttribute('sentry.release', $options->getRelease())
77-
->setAttribute('sentry.environment', $options->getEnvironment() ?? Event::DEFAULT_ENVIRONMENT)
78-
->setAttribute('sentry.server.address', $options->getServerName())
7976
->setAttribute('sentry.message.template', $message)
8077
->setAttribute('sentry.trace.parent_span_id', $hub->getSpan() ? $hub->getSpan()->getSpanId() : null);
8178

82-
if ($client instanceof Client) {
83-
$log->setAttribute('sentry.sdk.name', $client->getSdkIdentifier());
84-
$log->setAttribute('sentry.sdk.version', $client->getSdkVersion());
85-
}
86-
8779
foreach ($values as $key => $value) {
8880
$log->setAttribute("sentry.message.parameter.{$key}", $value);
8981
}

src/Serializer/EnvelopItems/LogsItem.php

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,40 @@ public static function toEnvelopeItem(Event $event): string
2929
"%s\n%s",
3030
JSON::encode($header),
3131
JSON::encode([
32-
'items' => array_map(static function (Log $log): array {
32+
'items' => array_map(static function (Log $log) use ($event): array {
33+
$attributes = $log->attributes()->all();
34+
35+
$environment = $event->getEnvironment();
36+
if ($environment !== null) {
37+
$attributes['environment'] = new Attribute($environment, 'string');
38+
}
39+
40+
$release = $event->getRelease();
41+
if ($release !== null) {
42+
$attributes['release'] = new Attribute($release, 'string');
43+
}
44+
45+
$serverName = $event->getServerName();
46+
if ($serverName !== null) {
47+
$attributes['server.name'] = new Attribute($serverName, 'string');
48+
}
49+
50+
$user = $event->getUser();
51+
if ($user !== null) {
52+
if ($user->getId() !== null) {
53+
$attributes['user.id'] = new Attribute($user->getId(), 'string');
54+
}
55+
if ($user->getEmail() !== null) {
56+
$attributes['user.email'] = new Attribute($user->getEmail(), 'string');
57+
}
58+
if ($user->getUsername() !== null) {
59+
$attributes['user.name'] = new Attribute($user->getUsername(), 'string');
60+
}
61+
}
62+
63+
$attributes['sdk.name'] = new Attribute($event->getSdkIdentifier(), 'string');
64+
$attributes['sdk.version'] = new Attribute($event->getSdkVersion(), 'string');
65+
3366
return [
3467
'timestamp' => $log->getTimestamp(),
3568
'trace_id' => $log->getTraceId(),
@@ -40,7 +73,7 @@ public static function toEnvelopeItem(Event $event): string
4073
'type' => $attribute->getType(),
4174
'value' => $attribute->getValue(),
4275
];
43-
}, $log->attributes()->all()),
76+
}, $attributes),
4477
];
4578
}, $logs),
4679
])

tests/Serializer/PayloadSerializerTest.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -416,13 +416,22 @@ public static function serializeAsEnvelopeDataProvider(): iterable
416416
(new Log(ClockMock::microtime(true), '21160e9b836d479f81611368b2aa3d2c', LogLevel::info(), 'A log message'))
417417
->setAttribute('foo', 'bar'),
418418
]);
419+
$event->setUser(UserDataBag::createFromArray([
420+
'id' => 'unique_id',
421+
'username' => 'my_user',
422+
'email' => 'foo@example.com',
423+
// Not included in the log message
424+
'ip_address' => '127.0.0.1',
425+
// Not included in the log message
426+
'segment' => 'my_segment',
427+
]));
419428

420429
yield [
421430
$event,
422431
<<<TEXT
423432
{"event_id":"fc9442f5aef34234bb22b9a615e30ccd","sent_at":"2020-08-18T22:47:15Z","dsn":"http:\/\/public@example.com\/sentry\/1","sdk":{"name":"sentry.php","version":"$sdkVersion","packages":[{"name":"composer:sentry\/sentry","version":"$sdkVersion"}]}}
424433
{"type":"log","item_count":1,"content_type":"application\/vnd.sentry.items.log+json"}
425-
{"items":[{"timestamp":1597790835,"trace_id":"21160e9b836d479f81611368b2aa3d2c","level":"info","body":"A log message","attributes":{"foo":{"type":"string","value":"bar"}}}]}
434+
{"items":[{"timestamp":1597790835,"trace_id":"21160e9b836d479f81611368b2aa3d2c","level":"info","body":"A log message","attributes":{"foo":{"type":"string","value":"bar"},"user.id":{"type":"string","value":"unique_id"},"user.email":{"type":"string","value":"foo@example.com"},"user.name":{"type":"string","value":"my_user"},"sdk.name":{"type":"string","value":"sentry.php"},"sdk.version":{"type":"string","value":"$sdkVersion"}}}]}
426435
TEXT
427436
,
428437
];

0 commit comments

Comments
 (0)