我认为现在搜索所有的Log::info()
已经太晚了,采用@jon__o提供的建议也不可行。
if (App::environment('local', 'staging')) {
Log::info($error);
}
但是你仍然可以做些事情。你可以用自己的实现覆盖默认的Laravel日志记录器实例。
前往你的ApplicationServiceProvider
并用自定义的实例覆盖log
实例:
public function register()
{
$this->registerLogger();
}
protected function registerLogger()
{
$this->app->instance('log', $log = new MyCustomWriter(
new Monolog($this->app->environment()), $app['events'])
);
$log->dontLogInfoOnEnvironmnets(['production', 'staging', 'other']);
return $log;
}
现在,您可以通过扩展Laravel的
Writer
并重写
info()
方法来创建自定义编写器。
class MyCustomWriter extends \Illuminate\Log\Writer
{
protected $dontInfoOn = [];
public function info($message, array $context = [])
{
if(!in_array($this->monolog->getName(), $this->dontInfoOn)) {
return parent::info($message, $context);
}
}
public function dontLogInfoOnEnvironmnets(array $environments)
{
$this->dontInfoOn = $environments;
}
}
这样,您可以在测试环境中仍然保留
Log::info
,而无需每次都进行检查。