ログの取り方

このページでは、掲示板の基本的なプログラミングは完成していることを前提に話を進めていきます。 基本的な機能とは、訪問者が書き込んだ内容をファイルに保存して、蓄積したデータをブラウザに表示することをいいます。 それでは説明に入ります。

掲示板を運営するにおいて一番大切な機能はログの取得です。 ログは大きく分けて2種類あります。 1つ目はアクセスログです。 アクセスログは、訪問者が掲示板にアクセスした時に取得するログです。 もう1つは、書き込みログです。 掲示板に書き込みをしたときに取得するログです。 アクセスログは、とにかく掲示板を見た人を全員をログとして保存するのに対して、書き込みログは 書き込みをした人だけログを取得します。 次に、ログを取得する上で必要な項目は大きく分けて4つあります。

・投稿者の名前
・投稿日時
・投稿時のホスト名またはIPアドレス
・投稿内容

名前と投稿内容は、掲示板の基本的な機能に含まれていますので説明を省きます。 ログで絶対必要なものである時間の取得について説明します。

Perlプログラム例:

( $sec, $min, $hour, $day, $mon, $year, $wday ) = localtime( time );
$wday = ( '日', '月', '火', '水', '木', '金', '土' )[ $wday ];
$date = sprintf( "%d/%02d/%02d(%s) %02d:%02d:%02d", $year + 1900, ++$mon, $day, $wday, $hour, $min, $sec );

アクセスした時間を掲示板の置いているコンピュータから取得するには「time関数」を使います。 この関数は、現在時間を取得できますが1970/1/1 00:00:00から現在までの時間を秒数で取得してしまうため、 「localtime関数」を使って日時形式に変換します。 変換した日時をそれぞれ、変数に格納していきます。

「$sec」は秒、「$min」は分、「$hour」は時間、「$day」は日、「$mon」は月、「$year」は年、 「$wday」は曜日が格納されます。 次に曜日は0〜6の数字で取得しますので、 人間のわかる日〜土に変換し、「$year」に1900を足し四桁の西暦にします。 「$mon」は0〜11で取得しますので実際の月よりも1少ないので、1を足します。 これで準備が整いました。

「sprintf関数」を使って書式を整えて「$date」に格納しておきます。 あとはこれを自由に画面に出すなり、ログファイルに保存すれば出来上がりです。 「$date」の中には、「2000/10/10(火) 10:10:10」のような感じの書式で時間を取得できています。

[PR] O脚 矯正 | ケアマネージャー 試験 | 利尻こんぶシャンプー