我运行了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]+)"
但AWStats只从第一个括号对中获取值而忽略其余部分。我认为它内部适用于perl正则表达式“魔法”提供的$1
。
有什么想法吗?
答案 0 :(得分: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"
答案 1 :(得分: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 ...
。