Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Apache

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: LogFormat помогите подогнать формат
 
 автор: ilin   (05.06.2009 в 14:53)   письмо автору
 
 

Вот строка из лога Apache 1.3

"81.200.20.121" "04/Jun/2009:00:15:49 MSD" "GET http://uz.msk.ru/emblem.gif HTTP/1.1" "302" "311" "http://uz.msk.ru/press.html" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10"

В отличие от стандартных форматов, в кавычки взяты не только текстовые, но и числовые поля. И поэтому привычный мне лог-анализатор Analog не распознает формат автоматически. Чтоб распознал, надо ему указать log format string в том самом виде, как она пишется в httpd.conf

Поэтому мой вопрос: что надо написать в конфигурации Apache, чтоб получить лог по приведенному выше образцу? Пытался решить методом тыка - не выходит...

Спасибо за помощь.

  Ответить  
 
 автор: ilin   (05.06.2009 в 15:41)   письмо автору
 
   для: ilin   (05.06.2009 в 14:53)
 

Метод тыка состоял в чтении документации mod_log_config
http://httpd.apache.org/docs/2.2/mod/mod_log_config.html
и попытке применить прочитанное.

Кавычки надо экранировать бэкслэшем, так?
Но тогда непонятен пример в документации:
Common Log Format (CLF) 
"%h %l %u %t \"%r\" %>s %b" 

ведь в common-формате в кавычках пишется не только referer, но и другие текстовые поля.

Сейчас попробую поэкспериментировать с Апачем, подсовывая ему слегка модифицированную строку.

  Ответить  
 
 автор: ilin   (05.06.2009 в 16:12)   письмо автору
 
   для: ilin   (05.06.2009 в 15:41)
 

Эксперименты привели к команде
LogFormat "\"%h\" \"%t\" \"%r\" \"%s\" \"%b\" \"%{Referer}i\" \"%{User-agent}i\""

Вот результат:
"127.0.0.1" "[05/Jun/2009:16:06:54 +0400]" "GET /igroki/photo.html HTTP/1.1" "200" "1895" "http://ugozapad.ru/photo.html" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"

Осталось убрать скобки в поле времени. Как это сделать?

  Ответить  
 
 автор: ilin   (05.06.2009 в 16:27)   письмо автору
 
   для: ilin   (05.06.2009 в 16:12)
 

Скобки убрал:
LogFormat "\"%h\" \"%{%d/%b/%Y:%T %z}t\" \"%r\" \"%s\" \"%b\" \"%{Referer}i\" \"%{User-agent}i\""

  Ответить  
 
 автор: ilin   (05.06.2009 в 16:32)   письмо автору
 
   для: ilin   (05.06.2009 в 16:27)
 

Ну вот... на свой вопрос ответил сам.
Теперь засовываю полученную строку в AnaLog - не работает:
APACHELOGFORMAT (\"%h\" \"%{%d/%b/%Y:%T %z}t\" \"%r\" \"%s\" \"%b\" \"%{Referer}i\" \"%{User-agent}i\")
Теперь вряд ли кто-то поможет...

  Ответить  
 
 автор: ilin   (05.06.2009 в 16:53)   письмо автору
 
   для: ilin   (05.06.2009 в 16:32)
 

Уфф...
Analog understands all Apache log formats, with the exception that it won't parse Apache's "%...{format}t" construction for customised times: if you have this construction, you will have to use ordinary LOGFORMAT instead.


Пришлось сочинять format string в собственном формате AnaLog'a
Сочинил:
LOGFORMAT ("%S" "%d/%M/%Y:%h:%n:%j" "%j %r %j" "%c" "%b" "%f" "%B")

Оказывается, там не надо экранировать кавычки, поэтому раньше у меня не получалось.
Заработало!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования