【发布时间】:2016-01-07 10:34:08
【问题描述】:
我的 Laravel 5 网站在具有 1 GB 磁盘空间的共享主机上运行。但现在我有大约 100 MB 的日志文件。如何在 Laravel 5 中禁用日志文件?
【问题讨论】:
我的 Laravel 5 网站在具有 1 GB 磁盘空间的共享主机上运行。但现在我有大约 100 MB 的日志文件。如何在 Laravel 5 中禁用日志文件?
【问题讨论】:
为了完全禁用日志记录,您需要覆盖 Laravel 设置的默认日志处理程序。你可以很容易地做到这一点
$nullLogger = new NullHandler();
\Log::getMonolog()->setHandlers(array($nullLogger));
您需要在处理请求之前尽早致电,例如你可以在你的 bootstrap/app.php 中做到这一点:
$app->configureMonologUsing(function($monolog) {
$nullLogger = new \Monolog\Handler\NullHandler();
$monolog->setHandlers(array($nullLogger));
});
return $app;
【讨论】:
如果您的日志非常大,那么要么您记录了很多日志,要么您的应用程序抛出了很多错误。您应该首先检查日志,看看是否可以减少写入的数据。
您还可以切换到每日日志记录,然后执行删除旧日志文件的工作。
接下来要做的是将您的日志记录配置更新为每天而不是config/app.php 中的默认单项
Laravel 将处理每天轮换文件并在 5 天后删除旧的日志文件,或者如果您需要更多保留,则使用 app.max_log_files 的值。
【讨论】:
我知道这有点老了,但是:
在 config/logging.php 中:
在channels 部分添加这些:
'none' => [
'driver' => 'monolog',
'handler' => \Monolog\Handler\NullHandler::class,
],
然后更新您的 .env 文件以使用此记录器:
LOG_CHANNEL=none
一切都应该正常工作。
【讨论】:
NullHandler 的全类名称是\Monolog\Handler\NullHandler
NullHandler 时,它不起作用。它仍然创建了laravel.log,它记录了一个额外的异常,但没有在 Whoops 中呈现它:Unable to create configured logger. Using emergency logger. {"exception":"[object] (InvalidArgumentException(code: 0): NullHandler must be an instance of Monolog\\Handler\\HandlerInterface at <snip>/Illuminate/Log/LogManager.php:328。我会相应地编辑答案。
use 语句引用的。我应该为NullHandler 做同样的事情。我会保留我的评论和编辑,以防它帮助某人。
当使用每日日志模式时,Laravel 默认只保留five days 的日志文件。如果要调整保留文件的数量,可以在app 配置文件中添加log_max_files 配置值:
'log_max_files' => 30
【讨论】:
对我来说,wamp 中的文件夹 'tmp' 增长了 15 giga!
经过一番研究,我发现原因是 xdebug 扩展
我只是将其调整为不发送调试信息,来自php.ini:
xdebug.profiler_enable = 0
【讨论】:
您可以通过注释以下行来禁用写入操作 Log:::
Log::useFiles(storage_path().'/logs/laravel.log');
在start/global.php
但是首先,您应该找出为什么您的日志文件那么大? 其次,对您的文件具有某种归档功能也会有所帮助。也许一天两次。
希望对您有所帮助。祝你好运!
【讨论】:
是的,你需要编辑核心 laravel 文件才能不保存日志文件..
去vendor->laravel->framework->src->Illuminate->Log->Writer.php 然后注释掉函数 __call 中的所有代码,如下所示。
public function __call($method, $parameters)
{
// if (in_array($method, $this->levels))
// {
// call_user_func_array(array($this, 'fireLogEvent'), array_merge(array($method), $parameters));
// $method = 'add'.ucfirst($method);
// return $this->callMonolog($method, $parameters);
// }
// throw new \BadMethodCallException("Method [$method] does not exist.");
}
您的日志将永远不会被保存。
【讨论】: