600MB を超える 1 つのアクセス ログ ファイルを持つ Apache サーバーを使用しています。これにより、ファイルの検索や解析が非常に困難になります。
管理しやすくするためにアクセス ファイルのコピーを毎日作成する、Apache 用のどのソフトウェアまたはモジュールを利用できますか?
7 に答える
logrotateを見たことがありますか。これはおそらく、これを達成するための最も簡単で、最も広く利用され、よく理解されている方法です。高度な設定が可能で、おそらく必要なことの 90% を実行できます。
私はCronologの大ファンです。ログをインストールしてパイプするだけです。毎日のログローテーションの場合、次のようなものが機能します。
ErrorLog "|/usr/bin/cronolog /path/to/logs/%Y-%m-%d/error.log"
CustomLog "|/usr/bin/cronolog /path/to/logs/%Y-%m-%d/access.log" combined
非常に便利で、一度インストールすると、logrotateよりも(私の経験では)簡単です。
オンラインで見つけるのが非常に難しいWindowsの実際のコマンドは次のとおりです。
CustomLog '|" "*Apache-Path/bin/rotatelogs.exe"
"**Apache-Path*/logs/backup/internet_access_%d-%m-%y.log" 86400' combined
「internet_access」ビットはファイルに付けた名前で、86400 は 1 日の秒数です。Apache-Path を、Apache をインストールした関連ディレクトリに変更する必要があります。
ログ回転
logrotate
おそらく最良の解決策です。このファイル/etc/logrotate.conf
を使用して、すべてのログの設定を変更します。ログが毎日ローテーションされるように変更weekly
します。また、アーカイブが圧縮されるようdaily
に追加することもできます。compress
古いログを気にしない場合は、ローテーションrotate 4
をより低い値に設定できます。
CustomLog "|bin/rotatelogs /var/logs/logfile 5M" 共通
この構成では、サイズが 5 メガバイトに達するたびにログ ファイルがローテーションされます。
ErrorLog "|bin/rotatelogs /var/logs/errorlog.%Y-%m-%d-%H_%M_%S 5M"
これは、Apache ログをリダイレクトする最良の方法です。mod を httpd でコンパイルする必要はありません。
Windows OS では、rotatelog.exe または cronolog.exe。これらは、http.conf のパイプ コマンドで使用されます。Mod_log_rotate Apache の追加モジュールは、アクセス ログ ローテーションのみです。Logrotate は、UNIX OS の場合のみです。
外部パイプなどを必要とせずにこれを行うモジュールがあります:
http://www.poptart.org/bin/view/Poptart/ModAutorotate
私はそれをApacheモジュールコレクションに追加しようとしましたが、それはしばらくの間壊れているようです.