Edited at

laravel5.8のログをrsyslogで出力する

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の一番上にルールを追記します。

下記の例ではprogramnamelaravelの場合/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