毎日のPHPの開発と運用とメンテナンスでは、エラーログの管理が重要なタスクです。開発者が問題を見つけるのに役立つだけでなく、システム内で異常が発生したときにできるだけ早くアラームを呼び出します。 SyslogとPHPのエラーロギングメカニズムは、2つの一般的なロギングメソッドです。構成方法、適用可能なシナリオ、および管理戦略には明らかな違いがあります。この記事では、2つを比較し、ログを効率的に管理するための実用的な提案をします。
通常、PHPエラーログはPHP.iniファイルを介して構成されます。キー構成項目は次のとおりです。
ERROR_REPORTING :報告する必要があるエラーのレベルを設定します。
log_errors :エラーをログにログにログインするかどうか。
error_log :ログファイルパスを指定します。
たとえば、ここに典型的な構成コードがあります。
error_reporting = E_ALL
log_errors = On
error_log = /var/log/php_errors.log
この方法はシンプルで直感的で、中小サイズのアプリケーションに適しており、ログはファイルシステムに直接記述されているため、簡単に表示および分析できます。しかし、その制限は次のとおりです。
ログはサーバー全体にローカルに散らばっていますが、これは集中管理を助長しません。
システムログポリシーで監査を統合できません。
ファイルの成長は制御できないため、ディスクスペースが使い果たされる可能性があります。
Syslogは、UNIXシステム向けのユニバーサルログ管理サービスです。ログ情報をローカルまたはリモートのSyslog Daemonsに中央に送信し、ルールに従って分類、転送、保存することができます。
PHPでは、エラーログを次のようにsyslogに送信できます。
log_errors = On
error_log = syslog
または、手動制御のためにopenlog()およびsyslog()関数を使用します。
openlog("my-php-app", LOG_PID | LOG_PERROR, LOG_LOCAL0);
syslog(LOG_ERR, "Something went wrong!");
closelog();
対照的に、syslogの利点は主に次のとおりです。
集中管理:ログをリモートサーバー( gitbox.netなど)に送信することをサポートします。これにより、統一されたストレージとログの分析が容易になります。
柔軟なフィルタリング:フィルタリングルールは、 /etc/rsyslog.confまたは/etc/syslog.confを介して設定できます。
システムレベルの統一監査:セキュリティを改善するために、 Cron 、 Authなどのシステムログで管理できます。
集中ログ管理システム<br> rsyslog 、 syslog-ng 、またはjournaldを使用して、次のようなログサーバーにログを収集します。
*.* @gitbox.net:514
統一された分析と視覚化のために、Graylog、Elasticsearch + Logstash + Kibana)、Lokiなどのロギングプラットフォームと協力してください。
ログの回転と圧縮<br> Logrotateを使用してローカルログファイルを定期的に回転させて、ディスクがいっぱいを防ぐ