在Codeigniter中记录异常的自定义方式

时间:2019-04-16 10:27:45

标签: codeigniter

我正在尝试为codeIgniter构建一个异常处理程序,该异常处理程序将在发生错误时触发,它将以纯净的格式在文本文件中记录所有导致异常的输入和异常产生的输出。

到目前为止,我只能使用log函数将异常记录在日志文件中。在error_db模板文件中,我提取了消息值并将其插入日志文件。

   <div id="container">
    <h1><?php echo $heading; ?></h1>
    <?php echo $message; 

     $formatted_msg = str_replace('</p>','',$message);
     $formatted_msgs = explode('<p>',$formatted_msg);
     $messages = $formatted_msgs[1].'    -->    '.$formatted_msgs[4].'    -->    '.$formatted_msgs[5];
     log_message('error',$messages);

    ?>
</div>

我想显示如下结果:什么函数,什么输入和哪一行导致异常并产生输出。现在我正在获取

之类的数据
    ERROR - 2019-04-16 15:28:40 --> Error Number: 1054    -->    Filename: file_path/system/database/DB_driver.php    -->    Line Number: 691

1 个答案:

答案 0 :(得分:0)

我遵循了这种方法并得到了答案。 https://stackoverflow.com/a/15860744/11367846

并根据我的要求添加了一些自定义。在控制器页面的异常中捕获用于自定义日志的添加代码。

public function controller_method( )
{
try
{
    // normal flow
}
catch( Exception $e )
{
    $trace = $e->getTrace();

    $result = 'Exception: "';
    $result .= $e->getMessage();
    $result .= '" @ ';
    if($trace[4]['file'] != '') {
      $result .= ' File : '.$trace[4]['file'].'::: Line : '.$trace[4]['line'].' ::: Source :'.$trace[5]['class'].' -> '.$trace[5]['function'].' ::: Function : '.$trace[4]['class'].' -> '.$trace[4]['function'].' ::: Inputs :'.http_build_query($trace[4]['args']);
    }

    log_message( 'error', $result );
}

}