SlackHandler
extends SocketHandler
in package
Sends notifications through Slack API
Tags
Table of Contents
- $bubble : bool
- $formatter : FormatterInterface|null
- $level : int
- $processors : array<string|int, callable>
- $chunkSize : int|null
- $connectionString : string
- $connectionTimeout : float
- $errno : int|null
- $errstr : string|null
- $lastSentBytes : int|null
- $lastWritingAt : float|null
- $persistent : bool
- $resource : resource|null
- $slackRecord : SlackRecord
- Instance of the SlackRecord util class preparing data for Slack API.
- $timeout : float
- $token : string
- Slack API token
- $writingTimeout : float
- __construct() : mixed
- __destruct() : mixed
- __sleep() : mixed
- close() : void
- Closes the handler.
- closeSocket() : void
- Close socket, if open
- excludeFields() : self
- getBubble() : bool
- Gets the bubbling behavior.
- getChunkSize() : int|null
- Get current chunk size
- getConnectionString() : string
- Get current connection string
- getConnectionTimeout() : float
- Get current connection timeout setting
- getFormatter() : FormatterInterface
- getLevel() : int
- Gets minimum logging level at which this handler will be triggered.
- getSlackRecord() : SlackRecord
- getTimeout() : float
- Get current in-transfer timeout
- getToken() : string
- getWritingTimeout() : float
- Get current local writing timeout
- handle() : bool
- {@inheritDoc}
- handleBatch() : void
- Handles a set of records at once.
- includeContextAndExtra() : self
- isConnected() : bool
- Check to see if the socket is currently available.
- isHandling() : bool
- {@inheritDoc}
- isPersistent() : bool
- Get persistent setting
- popProcessor() : callable
- {@inheritDoc}
- pushProcessor() : HandlerInterface
- {@inheritDoc}
- reset() : void
- setBubble() : self
- Sets the bubbling behavior.
- setChannel() : self
- Channel used by the bot when posting
- setChunkSize() : self
- Set chunk size. Only has effect during connection in the writing cycle.
- setConnectionTimeout() : self
- Set connection timeout. Only has effect before we connect.
- setFormatter() : HandlerInterface
- setIconEmoji() : self
- setLevel() : self
- Sets minimum logging level at which this handler will be triggered.
- setPersistent() : self
- Set socket connection to be persistent. It only has effect before the connection is initiated.
- setTimeout() : self
- Set write timeout. Only has effect before we connect.
- setUsername() : self
- Username used by the bot when posting
- setWritingTimeout() : self
- Set writing timeout. Only has effect during connection in the writing cycle.
- useAttachment() : self
- useShortAttachment() : self
- finalizeWrite() : void
- Finalizes the request by reading some bytes and then closing the socket
- fsockopen() : resource|false
- Wrapper to allow mocking
- fwrite() : int|bool
- Wrapper to allow mocking
- generateDataStream() : string
- getDefaultFormatter() : FormatterInterface
- Gets the default formatter.
- getResource() : resource|null
- pfsockopen() : resource|false
- Wrapper to allow mocking
- prepareContentData() : array<string|int, string>
- processRecord() : array<string|int, mixed>
- Processes a record.
- resetProcessors() : void
- streamGetMetadata() : array<string|int, mixed>|bool
- Wrapper to allow mocking
- streamSetChunkSize() : int|bool
- Wrapper to allow mocking
- streamSetTimeout() : bool
- Wrapper to allow mocking
- write() : void
- Connect (if necessary) and write to the socket
- buildContent() : string
- Builds the body of API call
- buildHeader() : string
- Builds the header of the API Call
- connect() : void
- connectIfNotConnected() : void
- createSocketResource() : void
- setSocketTimeout() : void
- setStreamChunkSize() : void
- validateTimeout() : void
- writeToSocket() : void
- writingIsTimedOut() : bool
Properties
$bubble
protected
bool
$bubble
= true
$formatter
protected
FormatterInterface|null
$formatter
$level
protected
int
$level
= MonologLogger::DEBUG
Tags
$processors
protected
array<string|int, callable>
$processors
= []
Tags
$chunkSize
private
int|null
$chunkSize
$connectionString
private
string
$connectionString
$connectionTimeout
private
float
$connectionTimeout
$errno
private
int|null
$errno
= null
$errstr
private
string|null
$errstr
= null
$lastSentBytes
private
int|null
$lastSentBytes
= null
$lastWritingAt
private
float|null
$lastWritingAt
= null
$persistent
private
bool
$persistent
$resource
private
resource|null
$resource
$slackRecord
Instance of the SlackRecord util class preparing data for Slack API.
private
SlackRecord
$slackRecord
$timeout
private
float
$timeout
$token
Slack API token
private
string
$token
$writingTimeout
private
float
$writingTimeout
Methods
__construct()
public
__construct(string $token, string $channel[, string|null $username = null ][, bool $useAttachment = true ][, string|null $iconEmoji = null ][, mixed $level = Logger::CRITICAL ][, bool $bubble = true ][, bool $useShortAttachment = false ][, bool $includeContextAndExtra = false ][, array<string|int, string> $excludeFields = array() ][, bool $persistent = false ][, float $timeout = 0.0 ][, float $writingTimeout = 10.0 ][, float|null $connectionTimeout = null ][, int|null $chunkSize = null ]) : mixed
Parameters
- $token : string
-
Slack API token
- $channel : string
-
Slack channel (encoded ID or name)
- $username : string|null = null
-
Name of a bot
- $useAttachment : bool = true
-
Whether the message should be added to Slack as attachment (plain text otherwise)
- $iconEmoji : string|null = null
-
The emoji name to use (or null)
- $level : mixed = Logger::CRITICAL
- $bubble : bool = true
- $useShortAttachment : bool = false
-
Whether the context/extra messages added to Slack as attachments are in a short style
- $includeContextAndExtra : bool = false
-
Whether the attachment should include context and extra data
- $excludeFields : array<string|int, string> = array()
-
Dot separated list of fields to exclude from slack message. E.g. ['context.field1', 'extra.field2']
- $persistent : bool = false
-
Flag to enable/disable persistent connections
- $timeout : float = 0.0
-
Socket timeout to wait until the request is being aborted
- $writingTimeout : float = 10.0
-
Socket timeout to wait until the request should've been sent/written
- $connectionTimeout : float|null = null
-
Socket connect timeout to wait until the connection should've been established
- $chunkSize : int|null = null
-
Sets the chunk size. Only has effect during connection in the writing cycle
Tags
Return values
mixed —__destruct()
public
__destruct() : mixed
Return values
mixed —__sleep()
public
__sleep() : mixed
Return values
mixed —close()
Closes the handler.
public
close() : void
Return values
void —closeSocket()
Close socket, if open
public
closeSocket() : void
Return values
void —excludeFields()
public
excludeFields(array<string|int, string> $excludeFields) : self
Parameters
- $excludeFields : array<string|int, string>
Return values
self —getBubble()
Gets the bubbling behavior.
public
getBubble() : bool
Return values
bool —true means that this handler allows bubbling. false means that bubbling is not permitted.
getChunkSize()
Get current chunk size
public
getChunkSize() : int|null
Return values
int|null —getConnectionString()
Get current connection string
public
getConnectionString() : string
Return values
string —getConnectionTimeout()
Get current connection timeout setting
public
getConnectionTimeout() : float
Return values
float —getFormatter()
public
getFormatter() : FormatterInterface
Return values
FormatterInterface —getLevel()
Gets minimum logging level at which this handler will be triggered.
public
getLevel() : int
Tags
Return values
int —getSlackRecord()
public
getSlackRecord() : SlackRecord
Return values
SlackRecord —getTimeout()
Get current in-transfer timeout
public
getTimeout() : float
Return values
float —getToken()
public
getToken() : string
Return values
string —getWritingTimeout()
Get current local writing timeout
public
getWritingTimeout() : float
Return values
float —handle()
{@inheritDoc}
public
handle(array<string|int, mixed> $record) : bool
Parameters
- $record : array<string|int, mixed>
Return values
bool —handleBatch()
Handles a set of records at once.
public
handleBatch(array<string|int, mixed> $records) : void
Parameters
- $records : array<string|int, mixed>
-
The records to handle (an array of record arrays)
Return values
void —includeContextAndExtra()
public
includeContextAndExtra(bool $includeContextAndExtra) : self
Parameters
- $includeContextAndExtra : bool
Return values
self —isConnected()
Check to see if the socket is currently available.
public
isConnected() : bool
UDP might appear to be connected but might fail when writing. See http://php.net/fsockopen for details.
Return values
bool —isHandling()
{@inheritDoc}
public
isHandling(array<string|int, mixed> $record) : bool
Parameters
- $record : array<string|int, mixed>
Return values
bool —isPersistent()
Get persistent setting
public
isPersistent() : bool
Return values
bool —popProcessor()
{@inheritDoc}
public
popProcessor() : callable
Return values
callable —pushProcessor()
{@inheritDoc}
public
pushProcessor(callable $callback) : HandlerInterface
Parameters
- $callback : callable
Return values
HandlerInterface —reset()
public
reset() : void
Return values
void —setBubble()
Sets the bubbling behavior.
public
setBubble(bool $bubble) : self
Parameters
- $bubble : bool
-
true means that this handler allows bubbling. false means that bubbling is not permitted.
Return values
self —setChannel()
Channel used by the bot when posting
public
setChannel(string $channel) : self
Parameters
- $channel : string
Return values
self —setChunkSize()
Set chunk size. Only has effect during connection in the writing cycle.
public
setChunkSize(int $bytes) : self
Parameters
- $bytes : int
Return values
self —setConnectionTimeout()
Set connection timeout. Only has effect before we connect.
public
setConnectionTimeout(float $seconds) : self
Parameters
- $seconds : float
Tags
Return values
self —setFormatter()
public
setFormatter(FormatterInterface $formatter) : HandlerInterface
Parameters
- $formatter : FormatterInterface
Return values
HandlerInterface —setIconEmoji()
public
setIconEmoji(string $iconEmoji) : self
Parameters
- $iconEmoji : string
Return values
self —setLevel()
Sets minimum logging level at which this handler will be triggered.
public
setLevel(Level|LevelName|\Psr\Log\LogLevel::* $level) : self
Parameters
- $level : Level|LevelName|\Psr\Log\LogLevel::*
-
Level or level name
Return values
self —setPersistent()
Set socket connection to be persistent. It only has effect before the connection is initiated.
public
setPersistent(bool $persistent) : self
Parameters
- $persistent : bool
Return values
self —setTimeout()
Set write timeout. Only has effect before we connect.
public
setTimeout(float $seconds) : self
Parameters
- $seconds : float
Tags
Return values
self —setUsername()
Username used by the bot when posting
public
setUsername(string $username) : self
Parameters
- $username : string
Return values
self —setWritingTimeout()
Set writing timeout. Only has effect during connection in the writing cycle.
public
setWritingTimeout(float $seconds) : self
Parameters
- $seconds : float
-
0 for no timeout
Return values
self —useAttachment()
public
useAttachment(bool $useAttachment) : self
Parameters
- $useAttachment : bool
Return values
self —useShortAttachment()
public
useShortAttachment(bool $useShortAttachment) : self
Parameters
- $useShortAttachment : bool
Return values
self —finalizeWrite()
Finalizes the request by reading some bytes and then closing the socket
protected
finalizeWrite() : void
If we do not read some but close the socket too early, slack sometimes drops the request entirely.
Return values
void —fsockopen()
Wrapper to allow mocking
protected
fsockopen() : resource|false
Return values
resource|false —fwrite()
Wrapper to allow mocking
protected
fwrite(string $data) : int|bool
Parameters
- $data : string
Return values
int|bool —generateDataStream()
protected
generateDataStream(array<string|int, mixed> $record) : string
Parameters
- $record : array<string|int, mixed>
Return values
string —getDefaultFormatter()
Gets the default formatter.
protected
getDefaultFormatter() : FormatterInterface
Overwrite this if the LineFormatter is not a good default for your handler.
Return values
FormatterInterface —getResource()
protected
getResource() : resource|null
Return values
resource|null —pfsockopen()
Wrapper to allow mocking
protected
pfsockopen() : resource|false
Return values
resource|false —prepareContentData()
protected
prepareContentData(array<string|int, mixed> $record) : array<string|int, string>
Parameters
- $record : array<string|int, mixed>
Tags
Return values
array<string|int, string> —processRecord()
Processes a record.
protected
processRecord(array<string|int, mixed> $record) : array<string|int, mixed>
Parameters
- $record : array<string|int, mixed>
Tags
Return values
array<string|int, mixed> —resetProcessors()
protected
resetProcessors() : void
Return values
void —streamGetMetadata()
Wrapper to allow mocking
protected
streamGetMetadata() : array<string|int, mixed>|bool
Return values
array<string|int, mixed>|bool —streamSetChunkSize()
Wrapper to allow mocking
protected
streamSetChunkSize() : int|bool
Tags
Return values
int|bool —streamSetTimeout()
Wrapper to allow mocking
protected
streamSetTimeout() : bool
Tags
Return values
bool —write()
Connect (if necessary) and write to the socket
protected
write(array<string|int, mixed> $record) : void
Parameters
- $record : array<string|int, mixed>
Return values
void —buildContent()
Builds the body of API call
private
buildContent(array<string|int, mixed> $record) : string
Parameters
- $record : array<string|int, mixed>
Tags
Return values
string —buildHeader()
Builds the header of the API Call
private
buildHeader(string $content) : string
Parameters
- $content : string
Return values
string —connect()
private
connect() : void
Return values
void —connectIfNotConnected()
private
connectIfNotConnected() : void
Return values
void —createSocketResource()
private
createSocketResource() : void
Return values
void —setSocketTimeout()
private
setSocketTimeout() : void
Return values
void —setStreamChunkSize()
private
setStreamChunkSize() : void
Return values
void —validateTimeout()
private
validateTimeout(float $value) : void
Parameters
- $value : float
Return values
void —writeToSocket()
private
writeToSocket(string $data) : void
Parameters
- $data : string
Return values
void —writingIsTimedOut()
private
writingIsTimedOut(int $sent) : bool
Parameters
- $sent : int