自动将每10分钟生成的web应用程序日志加载到mysql

自动将每10分钟生成的web应用程序日志加载到mysql,mysql,linux,shell,awk,Mysql,Linux,Shell,Awk,我的目的是分析web应用程序日志,使用mysql作为数据库。首先,我使用awk过滤了一些无用的信息,生成了一个过滤后的日志,然后我将LOAD DATA导入到mysql 我的问题是:这些原始日志每天每10分钟生成一次。生成新的web应用程序日志后,如何生成过滤日志?生成新的过滤日志后,如何将这些文件自动导入mysql 原始日志: 20150414/0900.log 20150414/0910.log 我试着创建一个小脚本,它可以很容易地解释操作方法。这里有一个awk,它控制所有的读取文件。如

我的目的是分析web应用程序日志,使用mysql作为数据库。首先,我使用awk过滤了一些无用的信息,生成了一个过滤后的日志,然后我将LOAD DATA导入到mysql

我的问题是:这些原始日志每天每10分钟生成一次。生成新的web应用程序日志后,如何生成过滤日志?生成新的过滤日志后,如何将这些文件自动导入mysql

原始日志:

20150414/0900.log 
20150414/0910.log 

我试着创建一个小脚本,它可以很容易地解释操作方法。这里有一个awk,它控制所有的读取文件。如果新读取时读取的文件数量较大,系统将解析de名称并将其保存在“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
echo“x”>读取文件
lastnum=0
num=0
计数=0
虽然是真的
做
echo“查找新文件。LASTCOUNT=“$LASTCOUNT
计数=`ls./2015*/*.log | wc-l`
echo$count
如果[$count-gt$lastnum]
然后
lastnum=$count
`ls./2015*/*.log | awk-F“/”开始{
而((getline<“readFiles”)>0){
已读文件[$0]
}}
{if(!(readedFiles中的$0)){print$0}
“`>>读取文件
回显“等待重新启动”
睡眠10
其他的
回显“未找到新文件”
睡眠10
fi
完成

而不是编写脚本来监视日志。我使用inotify工具触发文件系统事件的脚本,只有几行代码可以完成任务

NOW=$(date +"%Y%m%d")
while true ;
do
inotifywait -r -e create,move /rsynclog/logs/$NOW && \
/rsynclog/logs/generate.sh
done 

? (我知道有一个死链接,但应该是一个开始)你的问题是什么,确切地说?听起来你需要一次性导入一堆文本文件(自动导入?)。请删除所有关于日志的信息。Jan,谢谢你的建议!我刚刚重新组织了我的问题。