How to log bandwidth usage for Apache virtual hosts

apache-2.2bandwidthlogging

I need a way to extract bandwidth usage logs for Apache virtual hosts. I see that a lot of people are recommending AWStats (and similar programs), but I don't need a graphical interface. All I need is usage data formatted in way that can be accessed by our billing program.

Something like this would be glorious:

<usage host="foo.com">
    <usage year="2009" month="2" bytes_in="12345" bytes_out="1235678" />
    ...
</usage>

It doesn't have to be xml, as long as it's fairly easy to parse and extract the vital information.

Best Answer

If you are using apache 2+ you can use modlogio's and %I or %O in LogFormat directive

config will be something like this:

LogFormat "%v %t %I %O" billing customLog /var/log/billing.log billing

then you can use awk or perl or whatever to aggregate the data in billing log and generate the reports