Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F1432233
RollbarHandler.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
RollbarHandler.php
View Options
<?php
declare
(
strict_types
=
1
);
/*
* 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\Handler
;
use
Rollbar\RollbarLogger
;
use
Throwable
;
use
Monolog\Logger
;
/**
* Sends errors to Rollbar
*
* If the context data contains a `payload` key, that is used as an array
* of payload options to RollbarLogger's log method.
*
* Rollbar's context info will contain the context + extra keys from the log record
* merged, and then on top of that a few keys:
*
* - level (rollbar level name)
* - monolog_level (monolog level name, raw level, as rollbar only has 5 but monolog 8)
* - channel
* - datetime (unix timestamp)
*
* @author Paul Statezny <paulstatezny@gmail.com>
*/
class
RollbarHandler
extends
AbstractProcessingHandler
{
/**
* @var RollbarLogger
*/
protected
$rollbarLogger
;
/** @var string[] */
protected
$levelMap
=
[
Logger
::
DEBUG
=>
'debug'
,
Logger
::
INFO
=>
'info'
,
Logger
::
NOTICE
=>
'info'
,
Logger
::
WARNING
=>
'warning'
,
Logger
::
ERROR
=>
'error'
,
Logger
::
CRITICAL
=>
'critical'
,
Logger
::
ALERT
=>
'critical'
,
Logger
::
EMERGENCY
=>
'critical'
,
];
/**
* Records whether any log records have been added since the last flush of the rollbar notifier
*
* @var bool
*/
private
$hasRecords
=
false
;
/** @var bool */
protected
$initialized
=
false
;
/**
* @param RollbarLogger $rollbarLogger RollbarLogger object constructed with valid token
*/
public
function
__construct
(
RollbarLogger
$rollbarLogger
,
$level
=
Logger
::
ERROR
,
bool
$bubble
=
true
)
{
$this
->
rollbarLogger
=
$rollbarLogger
;
parent
::
__construct
(
$level
,
$bubble
);
}
/**
* {@inheritDoc}
*/
protected
function
write
(
array
$record
):
void
{
if
(!
$this
->
initialized
)
{
// __destructor() doesn't get called on Fatal errors
register_shutdown_function
(
array
(
$this
,
'close'
));
$this
->
initialized
=
true
;
}
$context
=
$record
[
'context'
];
$context
=
array_merge
(
$context
,
$record
[
'extra'
],
[
'level'
=>
$this
->
levelMap
[
$record
[
'level'
]],
'monolog_level'
=>
$record
[
'level_name'
],
'channel'
=>
$record
[
'channel'
],
'datetime'
=>
$record
[
'datetime'
]->
format
(
'U'
),
]);
if
(
isset
(
$context
[
'exception'
])
&&
$context
[
'exception'
]
instanceof
Throwable
)
{
$exception
=
$context
[
'exception'
];
unset
(
$context
[
'exception'
]);
$toLog
=
$exception
;
}
else
{
$toLog
=
$record
[
'message'
];
}
// @phpstan-ignore-next-line
$this
->
rollbarLogger
->
log
(
$context
[
'level'
],
$toLog
,
$context
);
$this
->
hasRecords
=
true
;
}
public
function
flush
():
void
{
if
(
$this
->
hasRecords
)
{
$this
->
rollbarLogger
->
flush
();
$this
->
hasRecords
=
false
;
}
}
/**
* {@inheritDoc}
*/
public
function
close
():
void
{
$this
->
flush
();
}
/**
* {@inheritDoc}
*/
public
function
reset
()
{
$this
->
flush
();
parent
::
reset
();
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, May 16, 21:33 (1 d, 7 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
d7/e8/387457dd02e1acc19938f0ffc97d
Default Alt Text
RollbarHandler.php (3 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment