From 01e593cdeb71215deff5daa931ca7fe4e384e164 Mon Sep 17 00:00:00 2001 From: Jamie Learmonth Date: Mon, 9 Feb 2015 22:35:23 +0000 Subject: [PATCH 1/2] #493 Include context in slack extra info. --- src/Monolog/Handler/SlackHandler.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/Monolog/Handler/SlackHandler.php b/src/Monolog/Handler/SlackHandler.php index e3c8e11b..cc0062e5 100644 --- a/src/Monolog/Handler/SlackHandler.php +++ b/src/Monolog/Handler/SlackHandler.php @@ -169,6 +169,15 @@ class SlackHandler extends SocketHandler 'value' => $extra, 'short' => false ); + + // Add all context items as individual fields + foreach ($record['context'] as $var => $val) { + $attachment['fields'][] = array( + 'title' => $var, + 'value' => $val, + 'short' => true + ); + } } $dataArray['attachments'] = json_encode(array($attachment)); From 6f0e7f666e39b6e606d9837b146404312bec1a03 Mon Sep 17 00:00:00 2001 From: Jamie Learmonth Date: Wed, 11 Feb 2015 14:11:24 +0000 Subject: [PATCH 2/2] #493 Ensure extra and context fields are only added when they are present and not empty. Ensure both follow have consistent formatting. --- src/Monolog/Handler/SlackHandler.php | 72 +++++++++++++++++++++------- 1 file changed, 56 insertions(+), 16 deletions(-) diff --git a/src/Monolog/Handler/SlackHandler.php b/src/Monolog/Handler/SlackHandler.php index cc0062e5..560b2624 100644 --- a/src/Monolog/Handler/SlackHandler.php +++ b/src/Monolog/Handler/SlackHandler.php @@ -157,26 +157,47 @@ class SlackHandler extends SocketHandler } if ($this->includeExtra) { - $extra = ''; - foreach ($record['extra'] as $var => $val) { - $extra .= $var.': '.$this->lineFormatter->stringify($val)." | "; + + if (!empty($record['extra'])) { + + if ($this->useShortAttachment) { + + $attachment['fields'][] = array( + 'title' => "Extra", + 'value' => $this->stringify($record['extra']), + 'short' => $this->useShortAttachment + ); + } else { + // Add all extra fields as individual fields in attachment + foreach ($record['extra'] as $var => $val) { + $attachment['fields'][] = array( + 'title' => $var, + 'value' => $val, + 'short' => $this->useShortAttachment + ); + } + } } - $extra = rtrim($extra, " |"); + if (!empty($record['context'])) { - $attachment['fields'][] = array( - 'title' => "Extra", - 'value' => $extra, - 'short' => false - ); + if ($this->useShortAttachment) { - // Add all context items as individual fields - foreach ($record['context'] as $var => $val) { - $attachment['fields'][] = array( - 'title' => $var, - 'value' => $val, - 'short' => true - ); + $attachment['fields'][] = array( + 'title' => "Context", + 'value' => $this->stringify($record['context']), + 'short' => $this->useShortAttachment + ); + } else { + // Add all context fields as individual fields in attachment + foreach ($record['context'] as $var => $val) { + $attachment['fields'][] = array( + 'title' => $var, + 'value' => $val, + 'short' => $this->useShortAttachment + ); + } + } } } @@ -240,4 +261,23 @@ class SlackHandler extends SocketHandler return '#e3e4e6'; } } + + /** + * Stringifys an array of key/value pairs to be used in attachment fields + * + * @param array $fields + * @access protected + * @return string + */ + protected function stringify($fields) + { + $string = ''; + foreach ($fields as $var => $val) { + $string .= $var.': '.$this->lineFormatter->stringify($val)." | "; + } + + $string = rtrim($string, " |"); + + return $string; + } }