Skip to content

Commit 4cc1864

Browse files
committed
Add support for FlowdockHandler
1 parent bc76f7b commit 4cc1864

File tree

4 files changed

+44
-2
lines changed

4 files changed

+44
-2
lines changed

DependencyInjection/Configuration.php

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,13 @@
201201
* - [level]: level name or int value, defaults to DEBUG
202202
* - [bubble]: bool, defaults to true
203203
*
204+
* - flowdock:
205+
* - token: flowdock api token
206+
* - source: human readable identifier of the application
207+
* - from_email: email address of the message sender
208+
* - [level]: level name or int value, defaults to DEBUG
209+
* - [bubble]: bool, defaults to true
210+
*
204211
* @author Jordi Boggiano <[email protected]>
205212
* @author Christophe Coevoet <[email protected]>
206213
*/
@@ -273,7 +280,8 @@ public function getConfigTreeBuilder()
273280
->scalarNode('room')->end() // hipchat
274281
->scalarNode('notify')->defaultFalse()->end() // hipchat
275282
->scalarNode('nickname')->defaultValue('Monolog')->end() // hipchat
276-
->scalarNode('token')->end() // pushover & hipchat & loggly & logentries
283+
->scalarNode('token')->end() // pushover & hipchat & loggly & logentries & flowdock
284+
->scalarNode('source')->end() // flowdock
277285
->booleanNode('use_ssl')->defaultTrue()->end() // logentries
278286
->variableNode('user') // pushover
279287
->validate()
@@ -338,7 +346,7 @@ public function getConfigTreeBuilder()
338346
->performNoDeepMerging()
339347
->prototype('scalar')->end()
340348
->end()
341-
->scalarNode('from_email')->end() // swift_mailer and native_mailer
349+
->scalarNode('from_email')->end() // swift_mailer, native_mailer and flowdock
342350
->arrayNode('to_email') // swift_mailer and native_mailer
343351
->prototype('scalar')->end()
344352
->beforeNormalization()
@@ -577,6 +585,18 @@ public function getConfigTreeBuilder()
577585
->ifTrue(function ($v) { return 'logentries' === $v['type'] && empty($v['token']); })
578586
->thenInvalid('The token has to be specified to use a LogEntriesHandler')
579587
->end()
588+
->validate()
589+
->ifTrue(function ($v) { return 'flowdock' === $v['type'] && empty($v['token']); })
590+
->thenInvalid('The token has to be specified to use a FlowdockHandler')
591+
->end()
592+
->validate()
593+
->ifTrue(function ($v) { return 'flowdock' === $v['type'] && empty($v['from_email']); })
594+
->thenInvalid('The from_email has to be specified to use a FlowdockHandler')
595+
->end()
596+
->validate()
597+
->ifTrue(function ($v) { return 'flowdock' === $v['type'] && empty($v['source']); })
598+
->thenInvalid('The source has to be specified to use a FlowdockHandler')
599+
->end()
580600
->end()
581601
->validate()
582602
->ifTrue(function ($v) { return isset($v['debug']); })

DependencyInjection/MonologExtension.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -505,6 +505,26 @@ private function buildHandler(ContainerBuilder $container, $name, array $handler
505505
));
506506
break;
507507

508+
case 'flowdock':
509+
$definition->setArguments(array(
510+
$handler['token'],
511+
$handler['level'],
512+
$handler['bubble'],
513+
));
514+
515+
if (empty($handler['formatter'])) {
516+
$formatter = new Definition("Monolog\Formatter\FlowdockFormatter", array(
517+
$handler['source'],
518+
$handler['from_email'],
519+
));
520+
$formatterId = uniqid('monolog.flowdock.formatter.');
521+
$formatter->setPublic(false);
522+
$container->setDefinition($formatterId, $formatter);
523+
524+
$definition->addMethodCall('setFormatter', array(new Reference($formatterId)));
525+
}
526+
break;
527+
508528
// Handlers using the constructor of AbstractHandler without adding their own arguments
509529
case 'browser_console':
510530
case 'newrelic':

Resources/config/monolog.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
<parameter key="monolog.handler.null.class">Monolog\Handler\NullHandler</parameter>
1919
<parameter key="monolog.handler.test.class">Monolog\Handler\TestHandler</parameter>
2020
<parameter key="monolog.handler.gelf.class">Monolog\Handler\GelfHandler</parameter>
21+
<parameter key="monolog.handler.flowdock.class">Monolog\Handler\FlowdockHandler</parameter>
2122
<parameter key="monolog.handler.browser_console.class">Monolog\Handler\BrowserConsoleHandler</parameter>
2223
<parameter key="monolog.handler.firephp.class">Symfony\Bridge\Monolog\Handler\FirePHPHandler</parameter>
2324
<parameter key="monolog.handler.chromephp.class">Symfony\Bridge\Monolog\Handler\ChromePhpHandler</parameter>

Resources/config/schema/monolog-1.0.xsd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
<xsd:attribute name="ident" type="xsd:string" />
3535
<xsd:attribute name="facility" type="xsd:string" />
3636
<xsd:attribute name="host" type="xsd:string" />
37+
<xsd:attribute name="source" type="xsd:string" />
3738
<xsd:attribute name="port" type="xsd:integer" />
3839
<xsd:attribute name="action-level" type="level" />
3940
<xsd:attribute name="passthru-level" type="level" />

0 commit comments

Comments
 (0)