mar*_*zjc 5 php logging exception laravel
我开始在 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);
}
}
?>
Run Code Online (Sandbox Code Playgroud)
函数的调用是这样的:
try {
// code goes here
} catch (Exception $e) {
$exception = $e->getMessage();
Api\ApplicationEvents\LogWritter::write( $exception, 'Error');
}
Run Code Online (Sandbox Code Playgroud)
但是目前无法在日志文件中写入异常消息
有人可以帮我解决这个问题吗,我做错了什么?
您是否尝试过Api\ApplicationEvents\LogWritter::write( $exception, 'Error');单独测试您的代码?
例如尝试这个来测试你的代码是否有效
try {
throw new RuntimeException()
} catch (Exception $e) {
$exception = $e->getMessage();
Api\ApplicationEvents\LogWritter::write( $exception, 'Error');
}
Run Code Online (Sandbox Code Playgroud)
如果效果很好,你就知道你的类和方法没有任何问题。
编辑:
尝试这个:
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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12515 次 |
| 最近记录: |