private function combineRecords(array $records): array
    {
        $batchRecord = null;
        $batchRecords = [];
        $messages = [];
        $formattedMessages = [];
        $level = 0;
        $levelName = null;
        $datetime = null;

        foreach ($records as $record) {
            $record = $this->processRecord($record);

            if ($record['level'] > $level) {
                $level = $record['level'];
                $levelName = $record['level_name'];
            }

            if (null === $datetime) {
                $datetime = $record['datetime'];
            }

            $messages[] = $record['message'];
            $messageStr = implode(PHP_EOL, $messages);
            $formattedMessages[] = $this->getFormatter()->format($record);
            $formattedMessageStr = implode('', $formattedMessages);

            $batchRecord = [
                'message'   => $messageStr,
                'formatted' => $formattedMessageStr,
                'context'   => [],
                'extra'     => [],
            ];

            if (!$this->validateStringLength($batchRecord['formatted'], static::MAXIMUM_MESSAGE_LENGTH)) {
                // Pop the last message and implode the remaining messages
                $lastMessage = array_pop($messages);
                $lastFormattedMessage = array_pop($formattedMessages);
                $batchRecord['message'] = implode(PHP_EOL, $messages);
                $batchRecord['formatted'] = implode('', $formattedMessages);

                $batchRecords[] = $batchRecord;
                $messages = [$lastMessage];
                $formattedMessages = [$lastFormattedMessage];

                $batchRecord = null;
            }
        }

        if (null !== $batchRecord) {
            $batchRecords[] = $batchRecord;
        }

        // Set the max level and datetime for all records
        foreach ($batchRecords as &$batchRecord) {
            $batchRecord = array_merge(
                $batchRecord,
                [
                    'level'      => $level,
                    'level_name' => $levelName,
                    'datetime'   => $datetime,
                ]
            );
        }

        return $batchRecords;
    }
private function combineRecords(array $records): array
    {
        $batchRecord = null;
        $batchRecords = [];
        $messages = [];
        $formattedMessages = [];
        $level = 0;
        $levelName = null;
        $datetime = null;

        foreach ($records as $record) {
            $record = $this->processRecord($record);

            if ($record['level'] > $level) {
                $level = $record['level'];
                $levelName = $record['level_name'];
            }

            if (null === $datetime) {
                $datetime = $record['datetime'];
            }

            $messages[] = $record['message'];
            $messageStr = implode(PHP_EOL, $messages);
            $formattedMessages[] = $this->getFormatter()->format($record);
            $formattedMessageStr = implode('', $formattedMessages);

            $batchRecord = [
                'message'   => $messageStr,
                'formatted' => $formattedMessageStr,
                'context'   => [],
                'extra'     => [],
            ];

            if (!$this->validateStringLength($batchRecord['formatted'], static::MAXIMUM_MESSAGE_LENGTH)) {
                // Pop the last message and implode the remaining messages
                $lastMessage = array_pop($messages);
                $lastFormattedMessage = array_pop($formattedMessages);
                $batchRecord['message'] = implode(PHP_EOL, $messages);
                $batchRecord['formatted'] = implode('', $formattedMessages);

                $batchRecords[] = $batchRecord;
                $messages = [$lastMessage];
                $formattedMessages = [$lastFormattedMessage];

                $batchRecord = null;
            }
        }

        if (null !== $batchRecord) {
            $batchRecords[] = $batchRecord;
        }

        // Set the max level and datetime for all records
        foreach ($batchRecords as &$batchRecord) {
            $batchRecord = array_merge(
                $batchRecord,
                [
                    'level'      => $level,
                    'level_name' => $levelName,
                    'datetime'   => $datetime,
                ]
            );
        }

        return $batchRecords;
    }
private function combineRecords ( array $ records ) : array { $ batchRecord = null ; $ batchRecords = [ ] ; $ messages = [ ] ; $ formattedMessages = [ ] ; $ level = 0 ; $ levelName = null ; $ datetime = null ; foreach ( $ records as $ record ) { $ record = $ this -> processRecord ( $ record ) ; if ( $ record [ 'level' ] > $ level ) { $ level = $ record [ 'level' ] ; $ levelName = $ record [ 'level_name' ] ; } if ( null === $ datetime ) { $ datetime = $ record [ 'datetime' ] ; } $ messages [ ] = $ record [ 'message' ] ; $ messageStr = implode ( PHP_EOL , $ messages ) ; $ formattedMessages [ ] = $ this -> getFormatter ( ) -> format ( $ record ) ; $ formattedMessageStr = implode ( '' , $ formattedMessages ) ; $ batchRecord = [ 'message' => $ messageStr , 'formatted' => $ formattedMessageStr , 'context' => [ ] , 'extra' => [ ] , ] ; if ( ! $ this -> validateStringLength ( $ batchRecord [ 'formatted' ] , static :: MAXIMUM_MESSAGE_LENGTH ) ) { // Pop the last message and implode the remaining messages $ lastMessage = array_pop ( $ messages ) ; $ lastFormattedMessage = array_pop ( $ formattedMessages ) ; $ batchRecord [ 'message' ] = implode ( PHP_EOL , $ messages ) ; $ batchRecord [ 'formatted' ] = implode ( '' , $ formattedMessages ) ; $ batchRecords [ ] = $ batchRecord ; $ messages = [ $ lastMessage ] ; $ formattedMessages = [ $ lastFormattedMessage ] ; $ batchRecord = null ; } } if ( null !== $ batchRecord ) { $ batchRecords [ ] = $ batchRecord ; } // Set the max level and datetime for all records foreach ( $ batchRecords as & $ batchRecord ) { $ batchRecord = array_merge ( $ batchRecord , [ 'level' => $ level , 'level_name' => $ levelName , 'datetime' => $ datetime , ] ) ; } return $ batchRecords ; }
Combines multiple records into one. Error level of the combined record
will be the highest level from the given records. Datetime will be taken
from the first record.
Combines multiple records into one . Error level of the combined record will be the highest level from the given records . Datetime will be taken from the first record .