Laravel 5.1: sendOutputTo()截断日志文件?

3
使用 Laravel 5.1 中的任务调度器时,我将命令输出重定向到日志文件。它按预期工作,但每次写入之前都会截断日志文件。 这对于一个有用的日志文件来说并不太友好。
$schedule->command('queue:work')->everyMinute()->sendOutputTo(storage_path() . "/logs/mail.log");

我在laravel文档中找不到任何有关如何防止截断的内容。

有没有人知道如何避免这种情况发生?

2个回答

3
在Laravel 5.3中,他们添加了选项appendOutputTo()来完成这项工作。简单得多 :)
$schedule->command('emails:send')
     ->daily()
     ->appendOutputTo($filePath);

请在文档中查看appendOutputTo的使用方法


0

使用Event类无法完成此操作。 可以尝试以下方法:

$schedule->command('queue:work')->everyMinute()->sendOutputTo(storage_path() . "/logs/mail.recent");
File::append(storage_path() . "/logs/mail.log", File::get(storage_path() . "/logs/mail.recent"));

不是很美观,但这是我所知道的唯一方法。 还要别忘了在顶部添加use File;


漂亮吗?不是。但这是一个聪明的解决方案。感谢提供提示,如果我找不到更好的解决方案,我会尝试这个。 - Ryan
最终使用了这个方法,效果很好。但需要注意的是,为了引用全局命名空间,你需要使用"\File"而不是仅仅使用"File",因为在队列进程所在的命名空间中无法使用File门面。 - Ryan
我看到别名中有文件。 - M0rtiis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接