Skip to content

Commit

Permalink
Removed bulk logger because it seems unstable
Browse files Browse the repository at this point in the history
  • Loading branch information
WyriHaximus committed Feb 4, 2017
1 parent d8df536 commit 55046d8
Show file tree
Hide file tree
Showing 5 changed files with 95 additions and 322 deletions.
20 changes: 0 additions & 20 deletions example.bulk.php

This file was deleted.

103 changes: 0 additions & 103 deletions src/AbstractLogglyLogger.php

This file was deleted.

130 changes: 0 additions & 130 deletions src/LogglyBulkLogger.php

This file was deleted.

96 changes: 95 additions & 1 deletion src/LogglyLogger.php
Expand Up @@ -2,13 +2,32 @@

namespace WyriHaximus\React\PSR3\Loggly;

use Psr\Log\AbstractLogger;
use Psr\Log\InvalidArgumentException;
use Psr\Log\LogLevel;
use React\Dns\Resolver\Factory as ResolverFactory;
use React\EventLoop\LoopInterface;
use React\HttpClient\Client;
use React\HttpClient\Factory as HttpClientFactory;

final class LogglyLogger extends AbstractLogglyLogger
final class LogglyLogger extends AbstractLogger
{
/**
* Logging levels PSR-3 LogLevel enum
*
* @var array $levels Logging levels
*/
const LOG_LEVELS = [
LogLevel::DEBUG => 'DEBUG',
LogLevel::INFO => 'INFO',
LogLevel::NOTICE => 'NOTICE',
LogLevel::WARNING => 'WARNING',
LogLevel::ERROR => 'ERROR',
LogLevel::CRITICAL => 'CRITICAL',
LogLevel::ALERT => 'ALERT',
LogLevel::EMERGENCY => 'EMERGENCY',
];

/**
* @var Client
*/
Expand Down Expand Up @@ -41,6 +60,81 @@ private function __construct(Client $httpClient, string $token)
$this->token = $token;
}

public function log($level, $message, array $context = [])
{
$levels = self::LOG_LEVELS;
if (!isset($levels[$level])) {
throw new InvalidArgumentException(
'Level "'.$level.'" is not defined, use one of: '.implode(', ', array_keys(self::LOG_LEVELS))
);
}

$data = $this->format($level, $message, $context);
$this->send($data);
}

protected function format($level, $message, array $context): string
{
$message = (string)$message;
$context = $this->normalizeContext($context);
$message = $this->processPlaceHolders($message, $context);
$json = json_encode([
'level' => $level,
'message' => $message,
'level_message' => $level . ' ' . $message,
'context' => $context,
]);

if ($json === false) {
throw new InvalidArgumentException(json_last_error_msg());
}

return $json;
}

/**
* @param string $message
* @param array $context
* @return string
*
* Method copied from: https://github.com/Seldaek/monolog/blob/6e6586257d9fb231bf039563632e626cdef594e5/src/Monolog/Processor/PsrLogMessageProcessor.php
*/
private function processPlaceHolders(string $message, array $context): string
{
if (false === strpos($message, '{')) {
return $message;
}

$replacements = array();
foreach ($context as $key => $val) {
if (is_null($val) || is_scalar($val) || (is_object($val) && method_exists($val, '__toString'))) {
$replacements['{'.$key.'}'] = $val;
} elseif (is_object($val)) {
$replacements['{'.$key.'}'] = '[object '.get_class($val).']';
} else {
$replacements['{'.$key.'}'] = '['.gettype($val).']';
}
}

return strtr($message, $replacements);
}

private function normalizeContext(array $context): array
{
foreach ($context as $index => $value) {
if (is_array($value)) {
$context[$index] = $this->normalizeContext($value);
continue;
}

if (is_resource($value)) {
$context[$index] = sprintf('[resource] (%s)', get_resource_type($value));
continue;
}
}
return $context;
}

protected function send(string $data)
{
$this->httpClient->request(
Expand Down

0 comments on commit 55046d8

Please sign in to comment.