Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F3281596
phlog.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Advanced/Developer...
View Handle
View Hovercard
Size
2 KB
Referenced Files
None
Subscribers
None
phlog.php
View Options
<?php
/**
* libphutil log function for development debugging. Takes any argument and
* forwards it to registered listeners. This is essentially a more powerful
* version of `error_log()`.
*
* @param wild Any value you want printed to the error log or other registered
* logs/consoles.
* @param ... Other values to be logged.
* @return wild Passed $value.
*/
function
phlog
(
$value
/* , ... */
)
{
// Get the caller information.
$trace
=
debug_backtrace
(
)
;
$metadata
=
array
(
'file'
=>
$trace
[
0
]
[
'file'
]
,
'line'
=>
$trace
[
0
]
[
'line'
]
,
'trace'
=>
$trace
,
)
;
foreach
(
func_get_args
(
)
as
$event
)
{
$data
=
$metadata
;
if
(
(
$event
instanceof
Exception
)
||
(
$event
instanceof
Throwable
)
)
{
$type
=
PhutilErrorHandler
::
EXCEPTION
;
// If this is an exception, proxy it and generate a composite trace which
// shows both where the phlog() was called and where the exception was
// originally thrown from.
$proxy
=
new
PhutilProxyException
(
''
,
$event
)
;
$trace
=
PhutilErrorHandler
::
getExceptionTrace
(
$proxy
)
;
$data
[
'trace'
]
=
$trace
;
}
else
{
$type
=
PhutilErrorHandler
::
PHLOG
;
}
PhutilErrorHandler
::
dispatchErrorMessage
(
$type
,
$event
,
$data
)
;
}
return
$value
;
}
/**
* Example @{class:PhutilErrorHandler} error listener callback. When you call
* `PhutilErrorHandler::setErrorListener()`, you must pass a callback function
* with the same signature as this one.
*
* NOTE: @{class:PhutilErrorHandler} handles writing messages to the error
* log, so you only need to provide a listener if you have some other console
* (like Phabricator's DarkConsole) which you //also// want to send errors to.
*
* NOTE: You will receive errors which were silenced with the `@` operator. If
* you don't want to display these, test for `@` being in effect by checking if
* `error_reporting() === 0` before displaying the error.
*
* @param const A PhutilErrorHandler constant, like PhutilErrorHandler::ERROR,
* which indicates the event type (e.g. error, exception,
* user message).
* @param wild The event value, like the Exception object for an exception
* event, an error string for an error event, or some user object
* for user messages.
* @param dict A dictionary of metadata about the event. The keys 'file',
* 'line' and 'trace' are always available. Other keys may be
* present, depending on the event type.
* @return void
*/
function
phutil_error_listener_example
(
$event
,
$value
,
array
$metadata
)
{
throw
new
Exception
(
pht
(
'This is just an example function!'
)
)
;
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sun, Mar 23, 23:52 (1 d, 5 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1203793
Default Alt Text
phlog.php (2 KB)
Attached To
Mode
rARC Arcanist
Attached
Detach File
Event Timeline
Log In to Comment