laravel5.8のログをrsyslogで出力するよう設定したのでメモ
laravel側設定
laravel5.8では下記のログ出力方法が指定可能です。
名前 | 説明 |
---|---|
stack | 「マルチチャンネル」チャンネルを作成するためのラッパー機能 |
single | シングルファイル/パスベースのロガーチャンネル(StreamHandler) |
daily | RotatingFileHandlerベースの毎日ファイルを切り替えるMonologドライバ |
slack | SlackWebhookHandlerベースのMonologドライバ |
papertrail | SyslogUdpHandlerベースのMonologドライバ |
syslog | SyslogHandlerベースのMonologドライバ |
errorlog | ErrorLogHandlerベースのMonologドライバ |
monolog | サポートしているMonologハンドラをどれでも使用できる、Monologファクトリドライバ |
custom | チャンネルを生成するため、指定したファクトリを呼び出すドライバ |
今回は下記のようにsyslogを設定します。
config/logging.php
'channels' => [
'stack' => [
'driver' => 'stack',
//'channels' => ['daily'],
'channels' => ['syslog'],
'ignore_exceptions' => false,
],
キャッシュをクリアします。
# php artisan config:cache
rsyslog設定
rsyslogのルールは上から順番に読み込まれるため、RULESの一番上にルールを追記します。
下記の例ではprogramnameがlaravelの場合/var/log/laravel.logに出力する事を意味します。
laravelのログのprogramnameはデフォルトではlaravelです。
また以降のルールでログが出力されないように& stopを使用しています。
/etc/rsyslog.conf
#### RULES ####
:programname, isequal, "laravel" /var/log/laravel.log
& stop
最後にrsyslogを再起動します。
# service rsyslog restart
laravelのログが指定したログファイルに出力されるようになった。
# ls -l /var/log/ |grep laravel.log
-rw------- 1 root root 891 Jul 23 23:05 laravel.log
(参考)Laravel 5.8 ログ
https://readouble.com/laravel/5.8/ja/logging.html
(参考)rsyslog のメモ
https://ngyuki.hatenablog.com/entry/2016/04/18/220724