ログローテーション(logrotate)とは...
各種ログファイルは放置しておくと時間とともに肥大化します。この問題を解決するのがログローテーションです。 ログローテーションは、例えばlogというログファイルの名前をlog1 log2 log3…というように定期的に回してバックアップします。
ローテーション数を4にしたのであれば定期的にlog4のログはlog3に上書きされ、log3のログはlog2に上書きされ、log2のログはlog1に上書きされ log1のログはlogに上書きされます。そして新たな空のログファイルlogが生成されます。一週間間隔でローテーションするのであれば ログファイルは1週間ログデータが記録されるごとに空になり、4週間分のログファイルがバックアップされていることになります。

logrotateはcronによって定期的に実行されています。
#ls -l /etc/cron.daily/logrotate
-rwxr-xr-x    1 root     root          180  8月  2  2003 /etc/cron.daily/logrotate
#vi /etc/cron.daily/logrotate
#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
これを見てもわかるようにlogrotateの設定ファイルは/etc/logrotate.confです。
logrotateの設定
logrotateの設定ファイル/etc/logrotate.confのデフォルトは以下のようになっている。
#cat /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly  ←毎週ログローテーションする。

# keep 4 weeks worth of backlogs
rotate 4  ←4回ローテーションする。この場合は4週間分のログがバックアップされる。

# create new (empty) log files after rotating old ones
create  ←ローテーションしたときに新たな空のログファイルを生成する。

# uncomment this if you want your log files compressed
#compress

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d  ←/etc/logrotate.d以下の設定ファイルを読み込む。

# no packages own wtmp -- we'll rotate them here
/var/log/wtmp {  ←/var/log/wtmpファイルのローテーション設定である。
    monthly
    create 0664 root utmp
    rotate 1
}

# system-specific logs may be also be configured here.
この設定ファイルでは全体のデフォルトのローテーション設定を行い個々のログファイルのローテーション設定は/etc/logrotate.dディレクトリ内の各設定ファイルに記述します。 したがってここで記述した設定は個々のログファイルの設定で省略することができます。設定が異なる場合だけ記述します。例えばあるログファイルは毎日ローテーションしたいのであれば そのログファイルの設定ファイルに daily と記述します。そうすればこちらの設定が優先されますので毎日ローテーションされます。
#ls -l /etc/logrotate.d
-rw-r--r--    1 root     root           61  7月 18  2003 rpm
-rw-r--r--    1 root     root          228  6月  6  2003 syslog
-rw-r--r--    1 root     root           32  2月 23  2001 up2date
-rw-r--r--    1 root     root           89 10月 29 23:54 yum
/etc/logrotate.dディレクトリ内の個々のログファイルの設定ファイルのフォーマットは以下のようになっている。
ログファイル名 [ ログファイル名 …]{
    設定値
    ・・・
}
設定値には以下のようなものがある。

設定値 説明
compress ローテーションされたログをgzipで圧縮する。
create [パーミッション] [ユーザ名] [グループ名] ローテーション後に新たな空のログファイルを作成します。ファイルのパーミッション、ユーザ名、グループ名を指定できます。
daily 毎日ログローテーションする。
ifempty ログファイルが空でもローテーションする。
missingok ログファイルが存在しなくてもエラーを出さない。
monthly 毎月ログローテーションする。
nocompress ローテーションされたログを圧縮しない。
nocreate 新たな空のログファイルを作成しない。
nomissingok ログファイルが存在しない場合エラーを出す。
noolddir ローテーション対象のログと同じディレクトリにローテーションされたログを格納する。
notifempty ログファイルが空ならローテーションしない。
olddir ディレクトリ名 指定したディレクトリ内にローテーションされたログを格納する。
postrotate - endscript postrotateとendscriptの間に記述されたコマンドをログローテーション後に実行する。
prerotate - endscript postrotateとendscriptの間に記述されたコマンドをログローテーション前に実行する。
rotate 回数 指定した回数だけローテーションする。
size ファイルサイズ ログファイルが指定したファイルサイズ以上であればローテーションする。
sharedscripts 複数指定したログファイルに対してpostrotateまたはprerotateで記述されたコマンドを実行する。
weekly 毎週ログローテーションする。

以下は/var/log/rpmpkgsログファイルのローテーション設定である。
#cat /etc/logrotate.d/rpm
/var/log/rpmpkgs {
    weekly  ←毎週ログローテーションする。
    notifempty  ←ログファイルが空ならローテーションしない。
    missingok  ←ログファイルが存在しなくてもエラーを出さない。
}
最後にApacheのログファイルをローテーションする設定を紹介します。
#vi /etc/logrotate.d/apache  ←何のログファイルの設定ファイルか分かるファイル名にします。
/usr/local/apache/logs/access_log /usr/local/apache/logs/error_log {
missingok 
sharedscripts  ←複数のログファイルを指定しているので記述する必要があります。
postrotate
   /bin/kill -HUP `cat /usr/local/apache/logs/httpd.pid`
endscript
}
ログローテーション後にApacheを再起動しています。再起動しないとApacheは新たに作成されたログファイルを見つけることができないのでロギングすることができません。