bashapachecentosgoaccess

How to get access_log summary by goaccess starting from certain date?


Currently I keep 6 weeks of apache access_log. If I generate a access summary at month end:

cat /var/log/httpd/access_log* | goaccess --output-format=csv

the summary will include some access data from previous month.

How can I skip logs of previous month and summarise from first day of month?

p.s. the data-format is: %d/%b/%Y


Solution

  • You can trade the Useless Use of cat for a useful grep.

    grep -n $(date +'[0-3][0-9]/%b/%Y') /var/log/httpd/access_log* |
    goaccess --output-format=csv
    

    If the logs are by date, it would be a lot more economical to skip the logs which you know are too old or too new, i.e. modify the wildcard argument so you only match the files you really want (or run something like find -mtime -30 to at least narrow the set to a few files).

    (The cat is useless because, if goaccess is at all correctly written, it should be able to handle

    goaccess --output-format=csv /var/log/httpd/access_log*
    

    just fine.)