logwatch で PHP のログが送られてこないのでなんとかした話

このブログはさくらのVPS(CentOS)で運営しており、logwatch という1日1回アクセスログやエラーログなどが良い感じにまとめて送ってくれるツールを使用しています。

logwatch は各種ログのパスを指定することでそのログをまとめてくれるのですが、デフォルトでだいたいの見たいログはセットされていて、PHPのエラーログももちろん取り込むように指定がされています。しかし、何日たっても PHP のエラーログがまとめられてこない。エラーの一切ないクリーンなコード書いちゃったかなぁとか思って実際にログを見てみると普通にエラーでてる…。

調べてみると、logwatch はログの日付をパースしてその日にまとめるログを判別しているっぽい。だから日付をパースをできないとログはこないということのようです。

設定方法

logwatch の PHP のエラーログの設定ファイルを開き、日付をパースしている部分を実際のログファイルの日付の形式に合わせて編集します。

$ sudo cp /usr/share/logwatch/scripts/services/php /etc/logwatch/scripts/services/
$ sudo vi /etc/logwatch/scripts/services/php
  #my $date_format = '%d-%b-%Y %H:%M:%S';
  my $date_format = '%a %b %d %H:%M:%S %Y';

  #$1 =~ /(\d+)-(\w+)-(\d+) (\d+):(\d+):(\d+)/;
  $1 =~ /(\w+) (\w+) (\d+) (\d+):(\d+):(\d+) (\d+)/;
 
  #$time = timelocal($6, $5, $4, $1, $month2num{$2}, $3-1900);
  $time = timelocal($6, $5, $4, $3, $month2num{$2}, $7-1900);

logwatch に設定されている PHP のエラーログの日付のフォーマットに、わざわざデフォルトで動かないものが指定されているということもないと思うので、環境によってフォーマットが変わる場合があるということですかね。ちょっとそこまではわかりませんでした。。

MW WP Form

MW WP Form はショートコードベースのフォームプラグインです。多くの機能を持っており、例えば、多くのバリデーションルール、問い合わせデータの保存、そしてグラフ機能集計などを使用することができます。

さらに詳しく
Habakiri

Habakiri

Bootstrap ベースのシンプルな WordPress テーマ。レスポンシブ、多くのカスタマイズ機能。圧縮された CSS・JS を使用する高速化対策。Microformats 対応。Sass、クラスベースの functions.php。

さらに詳しく
basis-stylus

Basis

軽量なレスポンシブ Stylus/CSS フレームワーク。Flexbox ベースのグリッドシステム、疎結合なコンポーネント、バーティカルリズム。

さらに詳しく