Question

I have an AWStats running and the reports are built from IIS logfiles. I have an extra section to view all the actions of the executed perlscripts on the site.

The config looks like this:

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

The output looks like this:

Action    Pages    Hits
foo       1234     1234
bar       5678     5678

But there are some actions with the same name in different perl scripts.
I would need this:

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

Does anyone know how to create such a report?

EDIT:

I did some more research and all forum posts I've found say that it is not possible to have two columns in an extra section without hacking in awstats.pl

Now I am trying to put it into one column using URLWITHQUERY to output someting like this:

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

The new problem is that the query has more parameters than action, which are unordered. I tried this

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

but AWStats only gets the value from the first bracket pair and ignores the rest. I think it internally works with $1 provided by the perl regex 'magic'.

Any ideas?

Was it helpful?

Solution 2

I've found a solution.

awstats.pl fetches the data for the specified extra sections in line 19664 - 19750

This is my modification:

# 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;
    }
}

This will get the first and the second capture group specified in the ExtraSectionFirstColumnValuesX regex.

Example:

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

Needless to say that you need to add a $3 $4 $5 ... if you need more groups.

OTHER TIPS

maybe?

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

ExtraSectionFirstColumnTitle2="Action"
ExtraSectionFirstColumnValues2="QUERY_STRING,action=([a-zA-Z0-9]+)"
ExtraSectionFirstColumnFormat2="%s"
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top