AwsInspector\Model\CloudWatchLogs\Repository::findLogStreams PHP Method

findLogStreams() public method

public findLogStreams ( $logGroupName, string $logStreamNameFilter = null ) : Collection
$logGroupName
$logStreamNameFilter string
return AwsInspector\Model\Collection
    public function findLogStreams($logGroupName, $logStreamNameFilter = null)
    {
        if (empty($logGroupName)) {
            throw new \InvalidArgumentException('LogGroupName cannot be empty');
        }
        $result = $this->cloudWatchLogsClient->describeLogStreams(['logGroupName' => $logGroupName, 'orderBy' => 'LastEventTime', 'descending' => true]);
        $rows = $result->search('logStreams[]');
        $collection = new \AwsInspector\Model\Collection();
        foreach ($rows as $row) {
            if (!$logStreamNameFilter || Finder::matchWildcard($logStreamNameFilter, $row['logStreamName'])) {
                $collection->attach(new LogStream($row));
            }
        }
        return $collection;
    }

Usage Example

Example #1
0
 protected function interact(InputInterface $input, OutputInterface $output)
 {
     $logGroupName = $input->getArgument('group') ?: '*';
     $repository = new Repository();
     $groups = $repository->findLogGroups($logGroupName);
     if (count($groups) == 0) {
         throw new \InvalidArgumentException('Could not find any matching log groups');
     } elseif (count($groups) == 1) {
         $logGroupName = $groups->getFirst()->getLogGroupName();
     } else {
         $helper = $this->getHelper('question');
         $question = new ChoiceQuestion('Please select a log group', $groups->flatten('getLogGroupName'));
         $question->setErrorMessage('Log group %s is invalid.');
         $logGroupName = $helper->ask($input, $output, $question);
         $output->writeln('Selected log group: ' . $logGroupName);
     }
     $input->setArgument('group', $logGroupName);
     $logStreamName = $input->getArgument('stream') ?: '*';
     if ($logStreamName == '__FIRST__') {
         $streams = $repository->findLogStreams($logGroupName);
         $logStreamName = $streams->getFirst()->getLogStreamName();
     } else {
         $streams = $repository->findLogStreams($logGroupName, $logStreamName);
         if (count($streams) == 0) {
             throw new \InvalidArgumentException('Could not find any matching log streams');
         } elseif (count($streams) == 1) {
             $logStreamName = $streams->getFirst()->getLogStreamName();
         } else {
             $helper = $this->getHelper('question');
             $question = new ChoiceQuestion('Please select a log stream', $streams->flatten('getLogStreamName'));
             $question->setErrorMessage('Log stream %s is invalid.');
             $logStreamName = $helper->ask($input, $output, $question);
             $output->writeln('Selected log stream: ' . $logStreamName);
         }
     }
     $input->setArgument('stream', $logStreamName);
 }