Лог-сообщение для БД получить и просмотреть файлы - PullRequest
0 голосов
/ 14 февраля 2019

Я хочу предоставить пользовательский журнал ошибок для отладки внутренней ошибки сервера в codeignitor.

Я использовал try и catch, чтобы перехватить любую ошибку в строках кода, но безуспешно. Общие журналыгенерируется (из системной папки), если я запрашиваю какую-то неправильную таблицу. Когда я проверил файл построителя запроса базы данных, я обнаружил, что ошибки обрабатываются внутренним файлом, но он не выдает никаких исключений или ошибок (сценарий благополучно завершается послесоздание журнала и отображение ошибки).

try{ 
    $data['tags'] = $_SESSION['tags'];
    $data['accId'] = isset($_POST['accId']) ? $_POST['accId'] : '';
    $data['categorySelectionList']=$_SESSION['categorySelectionList'];
    $data['accountSelectionList'] = $_SESSION['accountSelectionList'];
    $_SESSION['transDescList'] = '';
    $this->load->model('Transactions_model');
    $data['transDescList'] = !empty($_SESSION['transDescList']) 
        ? $_SESSION['transDescList'] 
        :  $this->Transactions_model->getTransDescList($this->uid,$_SESSION['tbl_transactions']);
    $this->load->view('frontend/accounts/addTransaction', $data);
}catch(Error $e){
    log_message('error', 'There is a error by the user ');
} 

Есть ли способ создать пользовательский журнал из моего файла, такой как идентификатор пользователя, несколько данных сеанса, не затрагивая основные файлы.

Примечание. ХотяЯ добился этого с помощью AJAX-запроса. Если запрос не выполняется, я просто делаю еще один запрос на создание пользовательского журнала из xhr.responseText. Но я хочу знать, есть ли способ добиться этого, не затрагивая файлы ядра

1 Ответ

0 голосов
/ 14 февраля 2019

Для регистрации вашей ошибки в файле codeigniter crate core/MY_Exceptions.php для обработки ошибки клиента.

Здесь приведен пример core/MY_Exceptions.php file

class MY_Exceptions extends CI_Exceptions{


/*
 * Class constructor
 *
 * @return  void
 */
public function __construct()
{
    $this->ob_level = ob_get_level();
    /* Note: Do not log messages from this constructor.*/
}


/**
 * Exception Logger
 *
 * Logs PHP generated error messages
 *
 * @param   int $severity   Log level
 * @param   string  $message    Error message
 * @param   string  $filepath   File path
 * @param   int $line       Line number
 * @return  json response
 */
public function log_exception($severity, $message, $filepath, $line)
{
    /*
     *  default log this
     *  and user will get a message of server error
     */
    $severity = isset($this->levels[$severity]) ? $this->levels[$severity] : $severity;
    log_message('error', 'Severity: '.$severity.' --> '.$message.' '.$filepath.' '.$line);

    $response = array(
        'status' => 'Error',
        'error' => '1',
        'message' => 'Server Error ! Please contact administrator !'
    );
    echo json_encode($response);exit;
}


/**
 * 404 Error Handler
 *
 * @uses    CI_Exceptions::show_error()
 *
 * @param   string  $page       Page URI
 * @param   bool    $log_error  Whether to log the error
 * @return  json response
 */
public function show_404($page = '', $log_error = TRUE)
{
    if (is_cli())
    {
        $heading = 'Not Found';
        $message = 'The controller/method pair you requested was not found.';
    }
    else
    {
        $heading = '404 Page Not Found';
        $message = 'The page you requested was not found.';
    }

    /*
     *  default log this
     *  and user will get a message of server error
     */
    if ($log_error)
    {
        log_message('error', $heading.': '.$page);
    }

    $response = array(
        'status' => 'Error',
        'error' => '1',
        'message' => $message
    );
    echo json_encode($response);exit;
}


/**
 * General Error Page
 *
 * Takes an error message as input (either as a string or an array)
 * and displays it using the specified template.
 *
 * @param   string      $heading    Page heading
 * @param   string|string[] $message    Error message
 * @param   string      $template   Template name
 * @param   int     $status_code    (default: 500)
 *
 * @return  json response
 */
public function show_error($heading, $message, $template = 'error_general', $status_code = 500)
{
    /*
     *  default log this
     *  and user will get a message of server error
     */
    log_message( 'error', print_r($heading,true).': '. print_r($message,true) );

    $response = array(
        'status' => 'Error',
        'error' => '1',
        'message' => 'Server Error ! Please contact administrator !'
    );
    echo json_encode($response);exit;
}


public function show_exception($exception)
{
    /*
     *  default log this
     *  and user will get a message of server error
     */
    log_message( 'error', $exception->getMessage() );

    $response = array(
        'status' => 'Error',
        'error' => '1',
        'message' => 'Server Error ! Please contact administrator !'
    );
    echo json_encode($response);exit;

}


/**
 * Native PHP error handler
 *
 * @param   int $severity   Error level
 * @param   string  $message    Error message
 * @param   string  $filepath   File path
 * @param   int $line       Line number
 * @return  json response
 */
public function show_php_error($severity, $message, $filepath, $line)
{
    /*
     *  default log this
     *  and user will get a message of server error
     */
    $severity = isset($this->levels[$severity]) ? $this->levels[$severity] : $severity;
    log_message('error', 'Severity: '.$severity.' --> '.$message.' '.$filepath.' '.$line);

    $response = array(
        'status' => 'Error',
        'error' => '1',
        'message' => 'Server Error ! Please contact administrator !'
    );
    echo json_encode($response);exit;
}

}

Вы можете зарегистрировать свою ошибку и установить ответ по своему желанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...