Filed in webdev, Софт

Наверное каждый, кто сталкивался с nginx + анализаторы логов уже в курсе, что у nginx свой формат логов и он не совместим с apache, к которым привыкли всеми любимые Analog, AWStats, WebAlizer.

Эта проблема для последующих логов решается или исправлением main до apache’вского или изменением типа записываемого лога с main на абсолютно совместимый с apache combined.

Например:
After: access_log /var/log/nginx/access_log.log main
Past: access_log /var/log/nginx/access_log.log combined

Но как быть с логами в «неправильном» формате, которые не хочется терять? Ответ один – преобразование в «правильные».

Мне в этом помог самописный скрипт на php
<?php
$fh = fopen('old_log', 'r');
$fh2 = fopen('new_log', 'w');

for ($i=1;!feof($fh);$i++) {
$line = fgets($fh, 4096);
if (fputs($fh2,preg_replace('/([\d\.]+\s-\s-\s.+)(\s\d+)(\s".+")(\s\d+\s.+)\s"-"/','$1$3$2$4',$line))."\n") {echo $i.' - True!'."\n";} else {echo "\n\n".$i.' - Pzdc!'."\n";}
}

fclose($fh);
fclose($fh2);
?>

Материалы использованные для написания (или как написать по своему):
Работа с файлами в PHP. Построчное чтение файлов, передача данных через сокеты.
Регулярные выражения на PHP

Posted by dmOx   @    26 апреля 2010 0 comments
Tags : analog , apache , awstats , log , nginx , php , regexp , softidle , webalizer , webdev

Share This Post

RSS Digg Twitter StumbleUpon Delicious Technorati

Related Posts

 0 Comments
No comments yet. Be the first to leave a comment !
Leave a comment