2016-04-01 172 views
1

我用下面的改变我的日志路径:Laravel更改日志路径

\Log::useDailyFiles(...) 

但我仍然得到/storage/logs/日志条目。我怎样才能只使用我的日志路径?

回答

3

当引导ConfigureLogging类时,Laravel已经注册了一个记录器的实例。因此,当您使用Log::useDailyFiles()时,您只需添加一个额外的日志处理程序,这就是为什么您还可以在标准storage/logs/laravel.log中获得日志条目的原因。

要覆盖默认日志处理程序,Laravel提供了应用程序实例上可用的configureMonologUsing方法。因此,在您bootstrap/app.php文件只是return $app;语句之前,添加以下内容:

$app->configureMonologUsing(function($monolog) use ($app) { 
    $monolog->pushHandler(
     (new Monolog\Handler\RotatingFileHandler(
      // Set the log path 
      '/custom/path/to/custom.log', 
      // Set the number of daily files you want to keep 
      $app->make('config')->get('app.log_max_files', 5) 
     ))->setFormatter(new Monolog\Formatter\LineFormatter(null, null, true, true)) 
    ); 
}); 

传递给RotatingFileHandler,尝试从config/app.php得到log_max_files配置值,以确定它应该有多少,每天的日志文件保存第二个参数,如果没有找到它,则默认为5。如果您想保留无限数量的每日日志文件,只需传递0即可。


您可以在Laravel Documentation中阅读更多关于日志配置的信息。

+0

非常感谢,我试了一下,但是我得到了致命错误:调用未定义的方法Illuminate \ Foundation \ Application,为什么?我不知道 –

+0

您使用的是Laravel版本?另外请发布整个错误堆栈跟踪,其中应包括错误触发的文件和行号,以及指定该行上的代码段。我以前使用过这个代码,它工作得很好。 – Bogdan

+0

它适合我!谢谢 – juanpscotto