1
0
mirror of https://github.com/Seldaek/monolog.git synced 2025-08-07 13:46:38 +02:00

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

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:38:57 -03:00
committed by GitHub
parent 1387e02612
commit e937256eee
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.
*
* @see https://cloud.google.com/logging/docs/structured-logging
* @see https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry
*
* @author Luís Cobucci <lcobucci@gmail.com>
@@ -28,7 +29,7 @@ final class GoogleCloudLoggingFormatter extends JsonFormatter
{
// Re-key level for GCP logging
$record['severity'] = $record['level_name'];
$record['timestamp'] = $record['datetime']->format(DateTimeInterface::RFC3339_EXTENDED);
$record['time'] = $record['datetime']->format(DateTimeInterface::RFC3339_EXTENDED);
// Remove keys that are not used by GCP
unset($record['level'], $record['level_name'], $record['datetime']);

View File

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