Chciałbym dodać nazwę vhosta do mojego dziennika błędów, a następnie potokować ją do napisanego przeze mnie programu.
Czy można zapisać niestandardowy format dziennika błędów, tak jak ma to miejsce w przypadku dziennika dostępu?
Chciałbym dodać nazwę vhosta do mojego dziennika błędów, a następnie potokować ją do napisanego przeze mnie programu.
Czy można zapisać niestandardowy format dziennika błędów, tak jak ma to miejsce w przypadku dziennika dostępu?
Odpowiedzi:
Aby uzyskać informacje na temat pipingu, zobacz dyrektywę ErrorLog i oficjalne wpisy instrukcji Piped Logs, które wyjaśniają to całkiem dobrze.
Uzyskiwanie niestandardowego formatu dziennika błędów jest trudniejsze. Możesz łatwo dostosować dziennik dostępu, LogFormat
ale nie ma nic wbudowanego do modyfikowania formatu dziennika błędów. Natknąłem się na CGI :: Carp, który jest modułem Perla do wyświetlania w dzienniku błędów. Wreszcie, zawsze modyfikuje się kod źródłowy Apache bezpośrednio w zależności od tego, jak bardzo chcesz tej funkcji.
W Apache 2.2 nie można łatwo zmienić formatu dziennika błędów - patrz http://httpd.apache.org/docs/2.2/logs.html#errorlog .
Apache 2.4 dodaje tę obsługę. Zobacz http://httpd.apache.org/docs/2.4/logs.html#errorlog .
Z Apache 2.4 możesz skorzystać z ErrorLogFormat
dyrektywy.
Składnia: ErrorLogFormat [connection|request] format
Prosty przykład
ErrorLogFormat "[%t] [%l] [pid %P] %F: %E: [client %a] %M"
Przykład (domyślny format wątkowych MPM)
ErrorLogFormat "[%{u}t] [%-m:%l] [pid %P:tid %T] %7F: %E: [client\ %a] %M% ,\ referer\ %{Referer}i"
Przykład (podobny do formatu 2.2.x)
ErrorLogFormat "[%t] [%l] %7F: %E: [client\ %a] %M% ,\ referer\ %{Referer}i"
Zaawansowany przykład z identyfikatorami dzienników żądań / połączeń
ErrorLogFormat "[%{uc}t] [%-m:%-l] [R:%L] [C:%{C}L] %7F: %E: %M"
ErrorLogFormat request "[%{uc}t] [R:%L] Request %k on C:%{c}L pid:%P tid:%T"
ErrorLogFormat request "[%{uc}t] [R:%L] UA:'%+{User-Agent}i'"
ErrorLogFormat request "[%{uc}t] [R:%L] Referer:'%+{Referer}i'"
ErrorLogFormat connection "[%{uc}t] [C:%{c}L] local\ %a remote\ %A"
Źródło: Dyrektywa ErrorLogFormat
%a
miałby być pusty? To powinien być adres IP klienta. I napisali pytanie o to.
Prawdopodobnie szukasz mod_log_debug .