2014-10-29 1 views
1

В настоящее время я сохраняю 6 недель доступа к apache access_log. Если я сгенерирую сводку доступа на конец месяца:Как получить сводку access_log по goaccess, начиная с определенной даты?

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

В итоговую информацию будут включены данные о доступе за предыдущий месяц.

Как пропустить журналы предыдущего месяца и суммировать их с первого дня месяца?

p.s. формат данных: %d/%b/%Y

ответ

0

Вы можете обменять бесполезное использование cat на полезный grep.

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

Если журналы по дате, это было бы намного более экономичным, чтобы пропустить журналы, которые вы знаете слишком стары или слишком новый, то есть изменить подстановочному аргумент, так что вы только соответствуют файлы, которые вы действительно хотите (или запустить что-то вроде find -mtime -30, чтобы хотя бы сузить набор до нескольких файлов).

(The cat бесполезно, потому что, если goaccess это совсем правильно написано, он должен быть в состоянии обрабатывать

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

просто отлично.)

+0

'Grep --no-файла $ (дата + "[0-3] [1-9] /% b /% Y") '(' --no-filename' требуется для Goaccess) – ohho

+0

@ohho Duh, я пытался напомнить себе, но забыл все равно! Спасибо за примечание - обновлено. – tripleee

+0

С man-страницы это тоже должно работать: 'zcat -f access.log * | sed -n '/' \ 'date +" 01 \ /% b \ /% Y "\' '/, $ p' | goaccess --output-format = csv' – Kayla