Something went wrong. Try again.
@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
Something went wrong. Try again.
PHP
at commit ff8b4897
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980<?php
/** * @group console */final class DarkConsoleErrorLogPluginAPI {
private static $errors = array();
private static $discardMode = false;
public static function registerErrorHandler() { // NOTE: This forces PhutilReadableSerializer to load, so that we are // able to handle errors which fire from inside autoloaders (PHP will not // reenter autoloaders). PhutilReadableSerializer::printableValue(null); PhutilErrorHandler::setErrorListener( array('DarkConsoleErrorLogPluginAPI', 'handleErrors')); }
public static function enableDiscardMode() { self::$discardMode = true; }
public static function disableDiscardMode() { self::$discardMode = false; }
public static function getErrors() { return self::$errors; }
public static function handleErrors($event, $value, $metadata) { if (self::$discardMode) { return; }
switch ($event) { case PhutilErrorHandler::EXCEPTION: // $value is of type Exception self::$errors[] = array( 'details' => $value->getMessage(), 'event' => $event, 'file' => $value->getFile(), 'line' => $value->getLine(), 'str' => $value->getMessage(), 'trace' => $metadata['trace'], ); break; case PhutilErrorHandler::ERROR: // $value is a simple string self::$errors[] = array( 'details' => $value, 'event' => $event, 'file' => $metadata['file'], 'line' => $metadata['line'], 'str' => $value, 'trace' => $metadata['trace'], ); break; case PhutilErrorHandler::PHLOG: // $value can be anything self::$errors[] = array( 'details' => PhutilReadableSerializer::printShallow($value, 3), 'event' => $event, 'file' => $metadata['file'], 'line' => $metadata['line'], 'str' => PhutilReadableSerializer::printShort($value), 'trace' => $metadata['trace'], ); break; default: error_log('Unknown event : '.$event); break; } }
}