2011-07-08 5 views
1

私はApache 2をインストールして実行していますが、/ logsフォルダに "access/error.txt"というログを記録しています。 IPに接続し、そのユーザーの要求をそれぞれのファイルに記録します。例えば、173.49.91.61の人が私のサーバにアクセスすると、apacheは自動的に/logs/173.49.94.61.txtを作成し、すべてのアクセスをログに記録します。それを得る?ApacheログにIPで名前を付けますか?

ありがとう、私はこれが可能かどうかわかりません。うまくいけば誰かが知っているだろう。 は自己宛てに聞き取れません

答えて

0

最初に、IPアドレスごとに1つのファイルがあるので、これは一般的に悪い考えです。あなたのサイトに200万以上ものユニークビジターがいて、大きな問題にぶち込まれるまでは、クールで管理も簡単です。これらの問題には、ディスクのパフォーマンスが非常に低く、ロギングディレクトリにlsrmを簡単に追加できないこと、およびディスク容量が足りなくなる前にinodeが不足する可能性があります。あなたは警告されています。これにより

http://httpd.apache.org/docs/current/logs.html#piped

あなたはこのような何か行うことができます:

CustomLog "|/path/to/script" common 

はあなたが本当にはまだこれをしたい 場合、ApacheはCustomLogディレクティブを持っている、と述べたこと/path/to/scriptはstdinを読み込み、与えられたIPアドレスに基づいてファイルを書き出すプログラムです。私はこれを行うことができる何かを認識していないので、あなた自身でこれを書く必要があります。それは、各エントリ時にファイルを開閉するよう、それは、競合状態とパフォーマンスの問題を持つことになりますよう

#!/usr/bin/perl 

while (<STDIN>) { 

    if ($_ =~ /^(\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b)/) { 
     open FILE, ">>", "/path/to/log/dir/" . $1 . ".txt"; 
     print FILE $_; 
     close FILE; 
    } else { 
     print STDERR "invalid input format!\n"; 
    } 

} 

このスクリプトは、単なる一例である:それは、この(perlの)のようになります。ただし、一度に開いているファイルハンドルが多すぎるような場合は、これ以上開けないように注意してください。

+0

私は毎日数百人のユニークな訪問者しか得ていないので、それほど大した取引ではありません。しかし、ありがとう。 –

関連する問題