我的目的是分析web应用程序的日志,使用mysql作为数据库。首先,我使用awk过滤一些无用的信息来生成过滤日志,然后我将LOAD DATA import this log应用到mysql中。
我的问题是:这些原始日志每天每10分钟生成一次。生成新的web应用程序日志后,如何生成过滤日志?生成新的过滤日志后,如何自动将这些文件导入mysql?
原始日志:
20150414/0900.log
20150414/0910.log 发布于 2015-04-14 23:11:07
我已经尝试创建了一个小脚本,可以很容易地解释如何做到这一点。在这里,你有一个控制所有readFiles的awk。如果在新的读取过程中读取的文件数量较多,系统将解析文件名并将其保存在"readFiles“文件中,该文件将在awk中进行检查,以确保该文件之前未被读取。
请检查您的系统不会删除旧的日志,并注意拆分已读的控制文件,或每天创建新的文件,以避免非常大的文件。
//this will give you the today datae
date +%Y%m%d代码如下:
echo "x" > readFiles
lastnum=0
num=0
count=0
while true
do
echo "LOOKING FOR NEW FILES. LASTCOUNT="$lastcount
count=`ls ./2015*/*.log | wc -l`
echo $count
if [ $count -gt $lastnum ]
then
lastnum=$count
`ls ./2015*/*.log | awk -F"/" 'BEGIN {
while(( getline < "readFiles") > 0 ) {
readedFiles[$0]
}}
{if(!($0 in readedFiles)){print $0}}
'`>> readFiles
echo "WAITING RESTART"
sleep 10
else
echo "NO NEW FILES FOUND"
sleep 10
fi
done发布于 2015-04-16 15:40:57
而不是编写脚本来监视日志。我使用inotify-tools在文件系统事件上触发脚本,只需几行代码就可以完成任务。
NOW=$(date +"%Y%m%d")
while true ;
do
inotifywait -r -e create,move /rsynclog/logs/$NOW && \
/rsynclog/logs/generate.sh
done https://stackoverflow.com/questions/29620160
复制相似问题