[英]Writing to custom log aswell as laravel.log in laravel 5
我试图为我的laravel应用程序编写自定义日志,因为应用程序非常大,所以我想组织我的日志文件。
问题是,如果在任何时候应用程序错误,它会写入laravel.log
文件并杀死脚本,就像php一样。
例如,我有一个像这样的自定义日志库
<?php
namespace App\Libraries\Logs;
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Log;
class CustomLogsLibrary {
public function userError($error){
$orderLog = new Logger('users');
$orderLog->pushHandler(new StreamHandler(storage_path('logs/users.log')), Logger::INFO);
$orderLog->info('Error 1', $error);
}
}
然后,如果这是我的脚本
$user = new User;
$user->nae = $request->name; //Name spelt wrong on purpose
$user->email = $request->email;
$user->password = bcrypt($request->password);
if(!$user->save()){
$errorCode = (new CustomLogsLibrary)->userError($user->save());
}
你可能会看到我在用户对象中拼错了'name'以强制出错。
然后Laravel错误的拼写错误名称和死亡,这意味着它永远不会实际到达我的自定义日志功能,而是记录
找不到列:1054'字段列表'中的未知列'nme'
到laravel.log
然后死了。 我知道如果返回false
会触发该函数,但是如果没有返回false并且函数出错的原因不同,我仍然希望将其记录在自定义文件中。
我该如何解决这个问题?
我希望能够将所有错误组织到单独的文件中,并优先通过标准laravel.log
文件写入这些文件。
您需要在位于此处的Laravel的Handler
类的render()
方法中添加自定义记录器: app/Exceptions/Handler.php
。
像这样的东西应该做的伎俩:
public function render($request, Exception $exception)
{
$error = (new CustomLogsLibrary)->userError($exception->getMessage());
return parent::render($request, $exception);
}
我确实有2个建议:
CustomLogsLibrary::userError('Error message')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.