1
0
mirror of https://github.com/Seldaek/monolog.git synced 2025-07-31 18:30:15 +02:00

Fix date/time field for GCP logging (#1759)

We introduced the formatter using the incorrect field, which was making
GCP not to extract the correct value from the payload.

This uses the field that actually maps to the expected format.

More info: https://cloud.google.com/logging/docs/structured-logging
This commit is contained in:
Luís Cobucci
2023-02-04 11:39:20 -03:00
committed by GitHub
parent e18aa33d2f
commit 69bd3637ba
2 changed files with 4 additions and 3 deletions

View File

@@ -17,6 +17,7 @@ use Monolog\LogRecord;
/** /**
* Encodes message information into JSON in a format compatible with Cloud logging. * Encodes message information into JSON in a format compatible with Cloud logging.
* *
* @see https://cloud.google.com/logging/docs/structured-logging
* @see https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry * @see https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry
* *
* @author Luís Cobucci <lcobucci@gmail.com> * @author Luís Cobucci <lcobucci@gmail.com>
@@ -29,7 +30,7 @@ final class GoogleCloudLoggingFormatter extends JsonFormatter
// Re-key level for GCP logging // Re-key level for GCP logging
$normalized['severity'] = $normalized['level_name']; $normalized['severity'] = $normalized['level_name'];
$normalized['timestamp'] = $record->datetime->format(DateTimeInterface::RFC3339_EXTENDED); $normalized['time'] = $record->datetime->format(DateTimeInterface::RFC3339_EXTENDED);
// Remove keys that are not used by GCP // Remove keys that are not used by GCP
unset($normalized['level'], $normalized['level_name'], $normalized['datetime']); unset($normalized['level'], $normalized['level_name'], $normalized['datetime']);

View File

@@ -30,8 +30,8 @@ class GoogleCloudLoggingFormatterTest extends TestCase
$formatted_decoded = json_decode($formatter->format($record), true); $formatted_decoded = json_decode($formatter->format($record), true);
$this->assertArrayNotHasKey("datetime", $formatted_decoded); $this->assertArrayNotHasKey("datetime", $formatted_decoded);
$this->assertArrayHasKey("timestamp", $formatted_decoded); $this->assertArrayHasKey("time", $formatted_decoded);
$this->assertSame($record->datetime->format(DateTimeInterface::RFC3339_EXTENDED), $formatted_decoded["timestamp"]); $this->assertSame($record->datetime->format(DateTimeInterface::RFC3339_EXTENDED), $formatted_decoded["time"]);
} }
/** /**