在Laravel日志中记录PHP异常


Log PHP exceptions in Laravel Log

我开始在Laravel 4中为我的应用程序创建一个自定义日志功能,对于自定义消息一切都很好,但当我尝试在try..catch(Exception $e)中记录异常消息时,不会在日志文件上写入此异常。

<?php namespace Api'ApplicationEvents;
use Monolog'Logger;
use Monolog'Handler'StreamHandler;
class LogWritter {
    public static function write( $logMessage, $logLevel)
    {
        $date = date('d_m_y');
        $logFile = public_path() . ''logs'log_' . $date . '.log';
        if ( !file_exists($logFile)) {
            $fp = fopen($logFile, 'w');
            fwrite($fp, '');
            fclose($fp);
        }
        $log = new Logger('Menu App Log: ');
        switch ($logLevel) {
            case 'Info':
                $log->pushHandler( new StreamHandler($logFile, Logger::INFO) ); 
                break;
            case 'Warn':
                $log->pushHandler( new StreamHandler($logFile, Logger::WARNING) ); 
                break;
            case 'Error':
                $log->pushHandler( new StreamHandler($logFile, Logger::ERROR) ); 
                break;
        }
        $log->addInfo($logMessage);
    }
}
?>

函数的调用如下:

try { 
// code goes here 
} catch (Exception $e) {
   $exception = $e->getMessage();
   Api'ApplicationEvents'LogWritter::write( $exception, 'Error');
}

但目前无法在日志文件中写入异常消息

谁能帮我把这件事做好,我做错了什么?

您是否尝试过单独测试您的Api'ApplicationEvents'LogWritter::write( $exception, 'Error');代码?

。试着测试你的代码是否有效

try { 
  throw new RuntimeException() 
} catch (Exception $e) {
   $exception = $e->getMessage();
   Api'ApplicationEvents'LogWritter::write( $exception, 'Error');
}

如果工作正常,你就知道你的类和方法没有问题。

编辑:

试试这个:

switch ($logLevel) {
    case 'Warn':
        $log->pushHandler( new StreamHandler($logFile, Logger::WARNING) ); 
        $log->addWarning($logMessage);
        break;
    case 'Error':
        $log->pushHandler( new StreamHandler($logFile, Logger::ERROR) ); 
        $log->addError($logMessage);            
        break;
    default:
        $log->pushHandler( new StreamHandler($logFile, Logger::INFO) ); 
        $log->addInfo($logMessage);
}