0

我有一个 AWStats 正在运行,并且报告是从 IIS 日志文件构建的。我有一个额外的部分来查看站点上执行的 perlscripts 的所有操作。

配置如下所示:

ExtraSectionName1="Actions"
ExtraSectionCodeFilter1="200 304"
ExtraSectionCondition1="URL,\/cgi\-bin\/.+\.pl"
ExtraSectionFirstColumnTitle1="Action"
ExtraSectionFirstColumnValues1="QUERY_STRING,action=([a-zA-Z0-9]+)"
ExtraSectionFirstColumnFormat1="%s"
ExtraSectionStatTypes1=HPB
ExtraSectionAddAverageRow1=0
ExtraSectionAddSumRow1=1
MaxNbOfExtra1=20
MinHitExtra1=1

输出如下所示:

Action    Pages    Hits
foo       1234     1234
bar       5678     5678

但是在不同的 perl 脚本中有一些同名的动作。
我需要这个:

Script    Action    Pages    Hits
foo.pl    foo       1234     1234
bar.pl    foo       1234     1234
foo.pl    bar       5678     5678
bar.pl    bar       5678     5678

有谁知道如何创建这样的报告?

编辑:

我做了更多的研究,我发现的所有论坛帖子都说,如果不入侵,就不可能在额外的部分中有两列awstats.pl

现在我试图将它放入一列中URLWITHQUERY,以输出如下内容:

Action                  Pages    Hits
foo.pl?action=foo       1234     1234
foo.pl?action=bar       1234     1234
bar.pl?action=foo       5678     5678
...

新问题是查询的参数多于操作,它们是无序的。我试过这个

ExtraSectionFirstColumnValues1="URLWITHQUERY,([a-zA-Z0-9]+\.pl\?).*(action=[a-zA-Z0-9]+)"

但 AStats 仅从第一个括号对中获取值,而忽略其余部分。我认为它在内部使用$1由 perl 正则表达式“魔术”提供。

有任何想法吗?

4

2 回答 2

0

也许?

ExtraSectionFirstColumnTitle1="Script"
ExtraSectionFirstColumnValues1="URL,\/cgi\-bin\/(.+\.pl)`enter code here`"
ExtraSectionFirstColumnFormat1="%s"

ExtraSectionFirstColumnTitle2="Action"
ExtraSectionFirstColumnValues2="QUERY_STRING,action=([a-zA-Z0-9]+)"
ExtraSectionFirstColumnFormat2="%s"
于 2012-02-17T16:09:45.830 回答
0

我找到了解决方案。

awstats.pl获取指定额外部分的数据line 19664 - 19750

这是我的修改:

# Line 19693 - 19701 in awstats.pl (AWStats version 7 Revision 1.971)
elsif ( $rowkeytype eq 'URLWITHQUERY' ) {
    if ( "$urlwithnoquery$tokenquery$standalonequery" =~
        /$rowkeytypeval/ )
    {
        $rowkeyval = "$1$2"; # I simply added a $2 for the second capture group
        $rowkeyok  = 1;
        last;
    }
}

这将获得在 ExtraSectionFirstColumnValuesX 正则表达式中指定的第一个和第二个捕获组。

例子:

ExtraSectionFirstColumnValues1="URLWITHQUERY,([a-zA-Z0-9]+\.pl\?).*(action=[a-zA-Z0-9]+)"

不用说,$3 $4 $5 ...如果您需要更多组,则需要添加一个。

于 2012-02-28T15:57:59.617 回答