Php 写入自定义日志以及laravel 5中的laravel.log
我正在尝试为我的laravel应用程序编写一个自定义日志,因为该应用程序非常大,所以我想组织我的日志文件 问题是,如果应用程序在任何时候出错,它会写入Php 写入自定义日志以及laravel 5中的laravel.log,php,laravel,logging,laravel-5,Php,Laravel,Logging,Laravel 5,我正在尝试为我的laravel应用程序编写一个自定义日志,因为该应用程序非常大,所以我想组织我的日志文件 问题是,如果应用程序在任何时候出错,它会写入laravel.log文件并终止脚本,就像php那样 例如,我有一个这样的自定义日志库 <?php namespace App\Libraries\Logs; use Monolog\Logger; use Monolog\Handler\StreamHandler; use Log; class CustomLogsLibrary
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对象中拼写了'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);
}
不过,我有两个建议:
CustomLogsLibrary::userError('Error message')
使用
app/Exceptions/Handler.php
render方法并添加自定义日志there@rkj很抱歉你能强调一下你的意思吗?我的意思是你可以在异常处理程序渲染方法中使用你的自定义日志,路径是app/Exceptions/handler.php
在那里你可以使用基于此的条件和自定义日志condition@rkj如果您有时间,可以举个例子吗?谢谢
public function render($request, Exception $exception)
{
$error = (new CustomLogsLibrary)->userError($exception->getMessage());
return parent::render($request, $exception);
}