在laravel中使用log rotator

时间:2016-01-03 06:57:14

标签: php laravel cron cron-task laravel-5.2

请考虑以下事项:

这是一个conf文件,位于:conf/log_rotation/laravel_rotate.conf

storage/logs/laravel.log {
  missingok
  notifempty
  compress
  size 1024k
  daily
  create 0640
}

由每天运行的laravel任务触发:

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class Logrotater extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'log_rotater';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Rotates the logs on an hourly basis';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        exec("logrotate -f config/log_rotation/tweet_rotate.conf");
        exec("logrotate -f config/log_rotation/laravel_rotate.conf");
    }
}

当我这样做时:php artisan log_rotater我得到:

error: config/log_rotation/laravel_rotate.conf:1 unknown option 'storage' -- ignoring line
error: config/log_rotation/laravel_rotate.conf:8 unexpected }

关于我收到此错误的原因的想法?

1 个答案:

答案 0 :(得分:1)

logrotate 要求提供的路径为绝对路径,否则会将给定的字符串视为配置选项。这就是您收到未知选项存储错误的原因。

替换

storage/logs/laravel.log

绝对路径。