117 lines
2.5 KiB
PHP
117 lines
2.5 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of the Monolog package.
|
|
*
|
|
* (c) Jordi Boggiano <j.boggiano@seld.be>
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace Monolog\Formatter;
|
|
|
|
/**
|
|
* formats the record to be used in the FlowdockHandler
|
|
*
|
|
* @author Dominik Liebler <liebler.dominik@gmail.com>
|
|
*/
|
|
class FlowdockFormatter implements FormatterInterface
|
|
{
|
|
/**
|
|
* @var string
|
|
*/
|
|
private $source;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
private $sourceEmail;
|
|
|
|
/**
|
|
* @param string $source
|
|
* @param string $sourceEmail
|
|
*/
|
|
public function __construct($source, $sourceEmail)
|
|
{
|
|
$this->source = $source;
|
|
$this->sourceEmail = $sourceEmail;
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function format(array $record)
|
|
{
|
|
$tags = array(
|
|
'#logs',
|
|
'#' . strtolower($record['level_name']),
|
|
'#' . $record['channel'],
|
|
);
|
|
|
|
foreach ($record['extra'] as $value) {
|
|
$tags[] = '#' . $value;
|
|
}
|
|
|
|
$subject = sprintf(
|
|
'in %s: %s - %s',
|
|
$this->source,
|
|
$record['level_name'],
|
|
$this->getShortMessage($record['message'])
|
|
);
|
|
|
|
$record['flowdock'] = array(
|
|
'source' => $this->source,
|
|
'from_address' => $this->sourceEmail,
|
|
'subject' => $subject,
|
|
'content' => $record['message'],
|
|
'tags' => $tags,
|
|
'project' => $this->source,
|
|
);
|
|
|
|
return $record;
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function formatBatch(array $records)
|
|
{
|
|
$formatted = array();
|
|
|
|
foreach ($records as $record) {
|
|
$formatted[] = $this->format($record);
|
|
}
|
|
|
|
return $formatted;
|
|
}
|
|
|
|
/**
|
|
* @param string $message
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getShortMessage($message)
|
|
{
|
|
static $hasMbString;
|
|
|
|
if (null === $hasMbString) {
|
|
$hasMbString = function_exists('mb_strlen');
|
|
}
|
|
|
|
$maxLength = 45;
|
|
|
|
if ($hasMbString) {
|
|
if (mb_strlen($message, 'UTF-8') > $maxLength) {
|
|
$message = mb_substr($message, 0, $maxLength - 4, 'UTF-8') . ' ...';
|
|
}
|
|
} else {
|
|
if (strlen($message) > $maxLength) {
|
|
$message = substr($message, 0, $maxLength - 4) . ' ...';
|
|
}
|
|
}
|
|
|
|
return $message;
|
|
}
|
|
}
|