我使用的是基于Laravel的OctoberCMS。使用OctoberCMS的任务调度日志
我有记录在数据库表vendor_log_
。
每天我都需要Laravel将新创建的记录列表保存为过时的.log文件。
在我的自定义组件的Plugin.php
文件中,我创建了一个registerSchedule
函数。我在它当前日期的表中有get()
记录,然后使用file_put_contents
将它们追加到.log文件。
但是,没有日志文件正被保存到我的日志服务器路径。我不知道时间表是否没有解雇或者可能会是什么,没有错误。
public function registerSchedule($schedule)
{
# Generate Daily Log File
$schedule->call(function() {
# Get Today's Date
$date = date("Y-m-d");
# Get Records by Today's Date
# Match Record created_at date, exclude time
$records = \Db::table('vendor_log_')
->whereDay('created_at', date('d'))
->whereMonth('created_at', date('m'))
->whereYear('created_at', date('Y'))
->get();
# Write records to log file
foreach ($records as $line) {
file_put_contents("/var/www/mysite/logs/$date.log", $line . PHP_EOL, FILE_APPEND);
}
})->everyMinute();
}
的$line
输出:
stdClass Object ([user_id] => 1 [id] => 28 [username] => [name] => test [created_at] => 2017-03-22 02:39:13)
注:我已经代替->daily()
用于->everyMinute()
生成日志更快进行测试。
文档:
https://octobercms.com/docs/plugin/scheduling#defining-schedules
https://laravel.com/docs/5.4/scheduling#schedule-frequency-options
你可以转储我们的一个$线做什么?可能是一个对象/数组到字符串转换无法正常工作。如果你想检查它是否会产生错误,你可以在控制器或其他任何东西中使用这个脚本吗? –
您确定您正确设置了调度程序:https://octobercms.com/docs/setup/installation#crontab-setup,即将正确的行放在您的crontab中。路径是否正确?如果两者都是这种情况,请在你的regsiterSchedule方法中使用一个简单的''traceLog('scheduler called')''来验证它实际上是否被调用。 –
@DouwedeHaan我想我发现了一个冲突,我的网站在/公用文件夹中,而且Laravel没有权限将它写在/ log之外。 –