<-
Apache > HTTP Server > Documentation > Version 2.0

Файлы системного журнала

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

top

Security Warning

любой, кто может написать справочнику, где Apache пишет файл системного журнала, может почти наверняка получить доступ к uid, что сервер начат как, который является обычно корнем. Сделать НЕТ дать людям, пишут доступ к справочнику, в котором регистрации сохранены, не будучи знающими о последствиях; см. security tips документ для деталей.

кроме того, файлы системного журнала могут содержать информацию, поставляемую непосредственно клиентом, без возможности избежать. Поэтому, это возможно для злонамеренных клиентов вставить характеры контроля в файлы системного журнала, таким образом забота должна быть взята имея дело с сырыми регистрациями.

top

Error Log

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

ошибочная регистрация обычно пишется файлу (типично error_log на системах unix и error.log на Windows и РТЕ/2). На системах unix также возможно иметь сервер, посылают ошибки syslog или pipe them to a program .

формат ошибочной регистрации - относительно свободная форма и описательный. Но есть определенная информация, которая содержится в большинстве ошибочных записей регистрации. Например, вот - типичное сообщение.

[Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/test

первый пункт во входе регистрации - дата и время сообщения. Второй вход перечисляет серьезность ошибки, о которой сообщают. LogLevel директива используется, чтобы управлять типами ошибок, которые посылают ошибочной регистрации, ограничивая уровень серьезности. Третий вход дает IP адрес клиента, который произвел ошибку. Кроме того - сообщение непосредственно, которое в этом случае указывает, что сервер формировался, чтобы отрицать доступ клиента. Сервер сообщает о дорожке файловой системы (в противоположность дорожке сети) требуемого документа.

очень широкое разнообразие различных сообщений может появиться в ошибочной регистрации. Большинство взгляда, подобного примеру выше. Ошибочная регистрация будет также содержать продукцию отладки от подлинников CGI. Любая информация, написанная stderr подлинником CGI будет скопирован непосредственно к ошибочной регистрации.

не возможно настроить ошибочную регистрацию, добавляя или удаляя информацию. Однако, ошибочные записи регистрации, имеющие дело со специфическими запросами имеют соответствующие записи в access log . например, вышеупомянутый вход примера соответствует входу регистрации доступа с кодексом 403 статуса. Так как возможно настроить регистрацию доступа, Вы можете получить больше информации об ошибочных условиях, используя тот файл системного журнала.

в течение испытания, часто полезно непрерывно контролировать ошибочную регистрацию для любых проблем. На системах unix, Вы можете достигнуть этого использования:

tail -f error_log

top

Access Log

регистрация доступа сервера делает запись всех запросов, обработанных сервером. Местоположением и содержанием регистрации доступа управляют CustomLog директива. LogFormat директива может использоваться, чтобы упростить выбор содержания регистраций. Эта секция описывает, как формировать сервер, чтобы сделать запись информации в регистрации доступа.

конечно, хранение информации в регистрации доступа - только начало управления регистрации. Следующий шаг должен проанализировать эту информацию, чтобы произвести полезную статистику. Анализ регистрации вообще - вне возможностей этого документа, и не действительно часть работы сервера сети непосредственно. За дополнительной информацией об этой теме, и для заявлений, которые выполняют анализ регистрации, чек Open Directory или Yahoo .

различные версии Apacheского httpd использовали другие модули и директивы, чтобы управлять заготовкой леса доступа, включая mod_log_referer, mod_log_agent, и TransferLog директива. CustomLog директива теперь включает в категорию функциональные возможности всех старших директив.

формат регистрации доступа очень конфигурируем. Формат определен, используя вереницу формата, которая очень напоминает C-стиль printf (1) вереница формата. Некоторые примеры представлены в следующих секциях. Для полного списка возможного содержания вереницы формата, см. mod_log_config format strings .

Common Log Format

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

LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access_log common

это определяет прозвище common и партнеры это со специфической регистрацией форматирует вереницу. Вереница формата состоит из директив процента, каждая из которых говорят серверу регистрировать специфическую информацию. Буквальные характеры могут также быть помещены в формат, натягивают и будет скопирован непосредственно в продукцию регистрации. Характер цитаты ( " ) нужно избежать, помещая наклонную черту влево прежде, чем это, чтобы препятствовать этому быть интерпретируемым как конец вереницы формата. Вереница формата может также содержать специальные характеры контроля " \n "для новой линии и" \t "для счета.

CustomLog директива настраивает новый файл системного журнала, используя определенный прозвище . имя файла для регистрации доступа - относительно ServerRoot если это начинается с разреза.

вышеупомянутая конфигурация напишет записи регистрации в формате, известном как Общий Формат Регистрации (CLF). Этот стандартный формат может быть произведен многими различными серверами сети и прочитан в соответствии с многими программами анализа регистрации. Записи файла системного журнала, произведенные в CLF будут выглядеть кое-что как это:

127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326

каждая часть этого входа регистрации описана ниже.

127.0.0.1 ( %h )
это - IP адрес клиента (отдаленный хозяин), который сделал запрос к серверу. Если HostnameLookups собирается On , тогда сервер будет пробовать определить hostname и регистрировать это вместо IP адреса. Однако, эта конфигурация не рекомендуется, так как это может значительно медленный сервер. Вместо этого лучше использовать постпроцессор регистрации, типа logresolve определять hostnames. IP адрес сообщил, что вот - не обязательно адрес машины, в которой сидит пользователь. Если сервер по доверенности будет существовать между пользователем и сервером, то этот адрес будет адресом полномочия, а не происходящей машины.
- ( %l )
"дефис" в продукции указывает, что требуемая информация не доступна. В этом случае, информация, которая не доступна, - RFC 1413 идентичности клиента, определенного identd на машине клиента. Эта информация очень ненадежна и никогда не должна почти использоваться за исключением внутренних сетей, которыми сильно управляют. Апачский httpd не будет даже пытаться не определить эту информацию если IdentityCheck собирается On .
frank ( %u )
это - userid человека, просящего документ как определено установлением подлинности HTTP. Та же самая ценность типично обеспечивается к подлинникам CGI в REMOTE_USER переменная окружающей среды. Если кодекс статуса для запроса (см. ниже) - 401, то этой ценности нельзя доверять, потому что пользователь еще не заверен. Если документ не будет защищенным паролем, то этот вход будет " - "точно так же как предыдущий.
[10/Oct/2000:13:55:36 -0700] ( %t )
время, когда запрос был получен. Формат:

[day/month/year:hour:minute:second zone]
day = 2*digit
month = 3*letter
year = 4*digit
hour = 2*digit
minute = 2*digit
second = 2*digit
zone = (`+' | `-') 4*digit

возможно показать время в другом формате, определяя %{format}t в регистрации форматируют вереницу, где format является как в strftime(3) от стандартной библиотеки C.
"GET /apache_pb.gif HTTP/1.0" ( \"%r\" )
линия запроса от клиента дается в двойных кавычках. Линия запроса содержит много полезной информации. Сначала, метод, используемый клиентом GET . во вторых, клиент просил ресурс /apache_pb.gif , и треть, клиент использовал протокол HTTP/1.0 . также возможно регистрировать одну или более частей линии запроса независимо. Например, вереница формата " %m %U%q %H "будет регистрировать метод, дорожку, вереницу вопроса, и протокол, приводя точно к той же самой продукции как" %r ".
200 ( %>s )
это - кодекс статуса, который сервер посылает назад клиенту. Эта информация очень ценна, потому что это показывает, привел ли запрос к успешному ответу (кодексы, начинающиеся в 2), переназначение (кодексы, начинающиеся в 3), ошибка, вызванная клиентом (кодексы, начинающиеся в 4), или ошибка в сервере (кодексы, начинающиеся в 5). Полный список возможных кодексов статуса может быть найден в HTTP specification (секция 10 RFC2616).
2326 ( %b )
последний вход указывает, что размер объекта возвратился к клиенту, не включая удары головой ответа. Если никакое содержание не было возвращено клиенту, эта ценность будет " - ". Регистрировать" 0 "ни для какого содержания, использования %B вместо этого.

Combined Log Format

другую обычно используемую вереницу формата называют Объединенным Форматом Регистрации. Это может использоваться следующим образом.

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
CustomLog log/access_log combined

этот формат - точно то же самое как Общий Формат Регистрации, с дополнением еще двух областей. Каждая из дополнительных областей использует директиву процента %{ header }i , где удар головой может быть любой удар головой запроса HTTP. Регистрация доступа под этим форматом будет похожа:

127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)"

дополнительные области:

"http://www.example.com/start.html" ( \"%{Referer}i\" )
"Referer" (так) HTTP просят удар головой. Это дает участок что сообщения клиента, отнесенные от. (Это должно быть страницей, которая связывается с или включает /apache_pb.gif ).
"Mozilla/4.08 [en] (Win98; I ;Nav)" ( \"%{User-agent}i\" )
Пользовательский агент HTTP просит удар головой. Это - совпадающая информация, о которой браузер клиента сообщает о себе.

Multiple Access Logs

многократные регистрации доступа могут быть созданы просто, определяя многократный CustomLog директивы в файле конфигурации. Например, следующие директивы создадут три регистрации доступа. Первое содержит основную информацию CLF, в то время как вторые и третий содержат информацию браузера и referer. Последние два CustomLog линии показывают, как подражать эффектам ReferLog и AgentLog директивы.

LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access_log common
CustomLog logs/referer_log "%{Referer}i -> %U"
CustomLog logs/agent_log "%{User-agent}i"

этот пример также показывает, что не необходимо определить прозвище с LogFormat директива. Вместо этого формат регистрации может быть определен непосредственно в CustomLog директива.

Conditional Logs

есть времена, когда удобно исключить определенные записи из регистраций доступа, основанных на особенностях запроса клиента. Это легко достигнуто с помощью environment variables . сначала, переменная окружающей среды должна собираться указать, что запрос встречает определенные условия. Это обычно достигается с SetEnvIf . тогда env= пункт CustomLog директива используется к включить или исключить запросы, где переменная окружающей среды - набор. Некоторые примеры:

# Mark requests from the loop-back interface
SetEnvIf Remote_Addr "127\.0\.0\.1" dontlog
# Mark requests for the robots.txt file
SetEnvIf Request_URI "^/robots\.txt$" dontlog
# Log what remains
CustomLog logs/access_log common env=!dontlog

как другой пример, рассмотрите запросы заготовки леса от носителей английского языка к одному файлу системного журнала, и неанглийским спикерам к различному файлу системного журнала.

SetEnvIf Accept-Language "en" english
CustomLog logs/english_log common env=english
CustomLog logs/non_english_log common env=!english

хотя мы только что показали, что условная заготовка леса очень мощна и гибка, это не единственный способ управлять содержанием регистраций. Файлы системного журнала более полезны, когда они содержат полный отчет деятельности сервера. Часто легче просто постобработать файлы системного журнала, чтобы удалить запросы, что Вы не хотите рассмотреть.

top

Log Rotation

на даже умеренно занятом сервере, количество информации, сохраненной в файлах системного журнала является очень большим. Файл системного журнала доступа типично вырастает на 1 MB или больше в 10 000 запросов. Следовательно будет необходимо периодически вращать файлы системного журнала, перемещаясь или удаляя существующие регистрации. Это не может быть сделано, в то время как сервер бежит, потому что Apache продолжит писать старому файлу системного журнала, пока это считает файл открытым. Вместо этого сервер должен быть restarted после того, как файлы системного журнала перемещены или удалены так, чтобы это открыло новые файлы системного журнала.

при использовании a изящный переначало, сервер может быть проинструктирован открыть новые файлы системного журнала, не теряя никаких существующих или надвигающихся связей от клиентов. Однако, чтобы достигать этого, сервер должен продолжить писать старым файлам системного журнала, в то время как это заканчивает служить старым запросам. Поэтому необходимо ждать в течение некоторого времени после переначала перед выполнением любой обработки на файлах системного журнала. Типичный сценарий, который просто вращает регистрации и сжимает старые регистрации, чтобы спасти место:

mv access_log access_log.old
mv error_log error_log.old
apachectl graceful
sleep 600
gzip access_log.old error_log.old

другой способ выполнять вращение регистрации использует piped logs как обсуждено в следующей секции.

top

Piped Logs

Apache httpd способен к письму ошибки и файлов системного журнала доступа через трубу к другому процессу, а не непосредственно к файлу. Эта способность драматично увеличивает гибкость заготовки леса, не добавляя кодекс к главному серверу. Чтобы написать регистрации трубе, просто замените имя файла характером трубы " | ", сопровождаемый названием выполнимого, которое должно принять записи регистрации на ее стандартном входе. Апач начнет процесс piped-регистрации, когда сервер начинается, и повторно начнет это, если это терпит крах, в то время как сервер бежит. (Эта последняя особенность - то, почему мы можем именовать эту технику как "надежная заготовка леса piped".)

процессы регистрации Piped порождены родительским Apacheским процессом httpd, и наследуют userid того процесса. Это означает, что piped регистрируют программы, обычно которыми управляют как корень. Поэтому очень важно держать программы простыми и безопасными.

одно важное использование регистраций piped должно позволить вращение регистрации, не имея необходимость повторно начинать сервер. Апачский Сервер HTTP включает простую названную программу rotatelogs с этой целью. Например, чтобы вращать регистрации каждые 24 часа, Вы можете использовать:

CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/access_log 86400" common

заметить, что кавычки используются, чтобы приложить всю команду, которую будут называть для трубы. Хотя эти примеры - для регистрации доступа, та же самая техника может использоваться для ошибочной регистрации.

подобная, но намного более гибкая программа вращения регистрации звонила cronolog является доступным на внешнем участке.

как с условной заготовкой леса, piped регистрации - очень мощный инструмент, но они не должны использоваться, где более простое решение как автономная постобработка доступно.

top

Virtual Hosts

при управлении сервера с многими virtual hosts , есть несколько вариантов для того, чтобы иметь дело с файлами системного журнала. Сначала, возможно использовать регистрации точно как в сервере единственного хозяина. Просто помещая директивы заготовки леса вне <VirtualHost> секции в основном контекст сервера, возможно регистрировать все запросы в той же самой регистрации доступа и ошибочной регистрации. Эта техника не учитывает легкое собрание статистики по индивидуальным действительным хозяевам.

если CustomLog или ErrorLog директивы помещены внутри a <VirtualHost> секция, все запросы или ошибки, для которых действительный хозяин будет зарегистрирован только к указанному файлу. Любому действительному хозяину, который не имеет директив заготовки леса, будут все еще посылать ее запросы главным регистрациям сервера. Эта техника очень полезна для небольшого количества действительных хозяев, но если число хозяев является очень большим, это может быть усложнено, чтобы справиться. Кроме того, это может часто создавать проблемы с insufficient file descriptors .

для регистрации доступа, есть очень хороший компромисс. Добавляя информацию относительно действительного хозяина регистрации форматируют вереницу, возможно регистрировать всех хозяев той же самой регистрации, и позже раскалывать регистрацию в индивидуальные файлы. Например, рассмотрите следующие директивы.

LogFormat "%v %l %u %t \"%r\" %>s %b" comonvhost
CustomLog logs/access_log comonvhost

%v используется, чтобы регистрировать название действительного хозяина, который служит запросу. Тогда программа как split-logfile может использоваться, чтобы постобработать доступ, загружаются заказ расколоть это в один файл в действительного хозяина.

top

Other Log Files

PID File

на запуске, Apache httpd экономит процесс id родительского процесса httpd к файлу logs/httpd.pid . это имя файла может быть изменено с PidFile директива. Процесс-id - для использования администратором в перестарте и завершении демона, посылая сигналы родительскому процессу; на Windows, используйте выбор линии команды-k вместо этого. За дополнительной информацией см. Stopping and Restarting страница.

Script Log

чтобы помогать в отладке, ScriptLog директива позволяет Вам делать запись входа к и продукции от подлинников CGI. Это должно только использоваться в испытании - не для живых серверов. Больше информации доступно в mod_cgi документация.

Rewrite Log

используя мощные и сложные особенности mod_rewrite , почти всегда необходимо использовать RewriteLog помогать в отладке. Этот файл системного журнала производит детальный анализ того, как двигатель переписывания преобразовывает запросы. Уровнем деталей управляют RewriteLogLevel директива.