我已經安裝了CentOS並安裝了繁忙的網絡服務器。 我需要從日誌文件中獲取統計信息並保留按日期排序的舊統計信息。Logrotate每30秒鐘並將日誌文件存儲在日期命名的目錄中
每隔30秒,應關閉並處理當前日誌文件(分析條目並將其存儲到數據庫中)。由於這會產生大量日誌文件,我想將它們分組到根據日期命名的目錄中。
此刻,我有兩個文件; rotation.conf和rotatenow.sh。 shell文件基於YmdHMS創建目錄。 之後,我運行命令「logrotate ./rotation.conf -v --force」以調用這個過程,但是如何讓配置文件將日誌放入新生成的目錄?整個事情可以在配置文件內完成嗎?
now="$(date)"
now="$(date +'%Y-%m-%d-%H:%M:%S')"
foldernavn="/var/www/html/stats/logs/nmdstats/closed/$now"
mkdir $foldernavn
logrotate ./nmdhosting.conf -v --force
目前,該配置文件看起來是這樣的:
/var/www/html/stats/logs/nmdhosting/access_log {
ifempty
missingok
(I am stuck)
(do some post-processing - run a Perl-script)
}
任何想法,將深表讚賞。
更新:我嘗試了不同的方法,添加此到httpd.conf:
TransferLog "|usr/sbin/rotatelogs /var/www/html/stats/logs/nmdstats/closed/activity_log.%Y%m%d%H%M%S 30".
它的工作原理,但顯然,使用這種方法時,它不能運行前/後處理腳本。這對於更新數據庫至關重要。我也許可以使用cronjob運行shell/Perl腳本,但我不相信這種方法。搜索的推移...
更新2: 我還測試的cronolog但 - 我的項目 - 所需的功能都尚未實施,但都在待辦事項。由於最新的版本是2002年,我不打算要等待它的出現:)
不過,我不知道的inotify工具,所以我設法建立一個監聽器:
srcdir="/var/www/html/stats/logs/nmdstats/history/"
inotifywait -m -e create $srcdir |
while read filename eventlist eventfile
do
echo "This logfile has just been closed: $eventfile"
done
我想,我可以從這裏處理它。謝謝你,約翰