从标签空间和换行符之间的日志文件中提取mysql查询

zkure5ic  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(306)

我有一个很大的日志文件有mysql日志。首先是查询的时间戳,然后是我认为的类型,然后是对数据库进行的实际查询。
举个例子 2018-12-07T08:45:12.653298Z(tabspace)(more spaces here)493(space)Query(tabspace)SHOW TABLES FROM test_c(newline) 问题是,对于大型查询,日志使用的行数更多(换行),因此一个查询的一个日志可以跨越多行。所以它会像下面这样 2018-12-07T08:45:12.931589Z 22 Query SELECT nav FROM main_nav WHERE 'main/index' LIKE CONCAT(url, '%') OR '/main/index/' LIKE CONCAT(url, '%') OR '/main/index' LIKE CONCAT(url, '%') OR 'main/index' LIKE CONCAT(url, '%') ORDER BY LENGTH(url) DESC 我要做的只是将查询提取到一个文件中,每个查询都在一行中,但我没有做到这一点。

nwwlzxa7

nwwlzxa71#

它搜索“关键字”“查询”。我用一个日志文件进行了测试,这个日志文件是用您在问题中提供的示例创建的。你必须在表中插入替换回显,希望对你有所帮助

<?php

    $f=fopen("logfile.log","r");
    $QueryFound=false;
    $ExtractedQuery='';
    while ($s=fgets($f)) {
        $SearchQueryKeyword=strpos($s," Query");
        if ($SearchQueryKeyword) {
            if ($QueryFound) {
                echo $ExtractedQuery."<br/><br/>";
            }
            $QueryFound=true;
            $ExtractedQuery=substr($s,$SearchQueryKeyword+6);
        }
        else {
            $ExtractedQuery.= $s;
        }
    }
    echo $ExtractedQuery;

    ?>

相关问题