私は私のsupervisor/conf.d/myconf.confファイルに以下の設定があります:
[program:my-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html/artisan queue:work sqs --queue=my_queue_name --tries=3 --daemon
autostart=true
autorestart=true
user=root
numprocs=1
redirect_stderr=true
stdout_logfile=/var/www/html/storage/logs/mylogfile.log
Storage/logs/mylogfile.logファイルにすべての権限を付与しました。なぜそれがまだログに記録されないのか理解できません、
毎日のログを使用していると思います。
1つのログファイルがある場合、1つのログファイルがあります。 "laravel.log"は完全なアクセス許可[777]を付与するため、ログを記録でき、すべてが期待どおりに機能します。
しかし、毎日のファイルを選択すると、laravelアプリは何かをログに記録する必要があるときはいつでも新しいファイルを作成します。このファイルの所有者はWebサーバーです(daemon/www -root)laravelはユーザーが実行するためdaemon/www-rootです。
キューが処理されているときのアクションのユーザーは "cli"であり、このファイルに書き込む権限がありません。そのため、例外がスローされ、処理が停止します。
毎日のログを使用している場合、私が推奨するのは、モノログの設定を変更して、ユーザーごとに異なるログファイルが作成されるようにすることです。
このコードをbootstrap/app.php
に追加します
/**
* Configure Monolog.
*/
$app->configureMonologUsing( function( Monolog\Logger $monolog) {
$processUser = posix_getpwuid( posix_geteuid() );
$processName= $processUser[ 'name' ];
$filename = storage_path( 'logs/laravel-' . php_sapi_name() . '-' . $processName . '.log' );
$handler = new Monolog\Handler\RotatingFileHandler( $filename );
$monolog->pushHandler( $handler );
});
アプリを再開する直前。
これで、cliのログファイルも作成され、キューに関連するすべてのものがそのファイルに記録されます。
これにより、ログファイルもクリーンに保たれます。 HTTPアプリログは別のファイルにあり、キュー処理ログは別のファイルにあります。
また、次のコマンドを実行することを忘れないでください。
新しい設定が正しく読み込まれていることを確認するには
php artisan config:clear
スーパーバイザデーモンキューワーカーを使用しているため、キューの再起動信号をブロードキャストする必要があります。
php artisan queue:restart
お役に立てれば。
@PrabhatRaiの回答に基づいて、Laravelのデフォルトの動作により似た別の設定例を次に示します。
このコードをbootstrap/app.php
に追加します。
$app->configureMonologUsing(function (Monolog\Logger $monolog) {
$filename = storage_path('logs/' . php_sapi_name() . '-' . posix_getpwuid(posix_geteuid())['name'] . '.log');
$monolog->pushHandler($handler = new Monolog\Handler\RotatingFileHandler($filename, 30));
$handler->setFilenameFormat('laravel-{date}-{filename}', 'Y-m-d');
$handler->setFormatter(new \Monolog\Formatter\LineFormatter(null, null, true, true));
});
laravel-2017-03-27-cli-raph.log
およびlaravel-2017-03-27-fpm-cgi-raph.log
。この問題を解決するために、私は次のことを行いました:
ストレージディレクトリとそのすべてのサブディレクトリのグループIDを設定します。このディレクトリで作成されたすべてのファイルには、グループとしてwww-dataが含まれます。
Sudo chgrp -r www-data storage
Sudo chmod +R g+s storage
<user>
グループwww-dataに対してスクリプトを実行する
Sudo usermod -a -G www-data user