Standardowo (przynajmniej w przypadku JBossa) nie są śledzone przychodzące połączenia HTTP. Może to wprowadzać pewną konsternację :), na szczęście łatwo to zmienić.
Odpowiednie modyfikacje należy wprowadzić w pliku server.xml
, który w przypadku JBossa (5.0) znajduje się w katalogu deploy/jbossweb.sar
odpowiedniej konfiguracji, z którą serwer jest uruchamiany.
Logowanie odbywa się przez klasę AccessLogValve
uruchomianą jako valve (hmm, kranik z angielska, ale nie mam pojęcia jak to będzie po polsku). Należy więc odszukać definicję z tą klasą i ją po prostu odkomentować. Wygląda ona następująco:
80 81 82 83 | <Valve className="org.apache.catalina.valves.AccessLogValve" prefix="localhost_access_log." suffix=".log" pattern="common" directory="${jboss.server.log.dir}" resolveHosts="false" /> |
Konstrukcję tę można umieścić w dowolnym kontenerze (Context
, Host
, Engine
) i będą wtedy zapisywane wszystkie połączenia przechodzące przez dany komponent.
Dopuszczalne parametry konfiguracyjne:
- className
Nazwa klasy, która ma odpowiadać za obsługę logowania. Do wyboru są dwie wartości:org.apache.catalina.valves.AccessLogValve
– bardziej ogólna, umożliwia zdefiniowanie zakresu logowanych informacjiorg.apache.catalina.valves.FastCommonAccessLogValve
– klasa przeznaczona do wykorzystania na systemach produkcyjnych, umożliwia jedynie na logowanie informacji w formaciecommon
lubcombined
- prefix
Ciąg znaków dodawany na początku nazwy pliku z logiem. Domyślną wartością jestaccess_log
. - suffix
Ciąg znaków dodawany na końcu nazwy pliku z logami. - pattern
Ciąg znaków zawierający informacje o tym, co powinno zostać zapisane w pliku z logami. Może to być definicja używający specjalnych znaczników lub też słowacommon
lubcombined
oznaczające jeden ze standardów logowanych informacji. Dokładną specyfikację można znaleźć w dokumentacji Tomcata. - directory
Ścieżka dostępu do katalogu w którym powinny być zapisywane pliki z logami. - resolveHosts
Jeżeli zostanie ustawiona natrue
to adresy IP zostaną zamienione na nazwy domenowe (będzie to negatywnie wpływało na wydajność, ponieważ będą potrzebne dodatkowe zapytania do serwera DNS). Jeżeli parametr przyjmie wartośćfalse
, zostaną użyte adresy IP. - rotatable
Parametr określa, czy plik z logami ma być rotowany. Domyślnie przyjmuje wartośćtrue
. Jeżeli zostanie ustawiony nafalse
, plik z logiem nigdy nie będzie rotowany oraz zawartość polafileDateFormat
zostanie zignorowana. - condition
Włączenie logowania warunkowego. Jeżeli parametr zostanie ustawiony na jakąś wartość, to informacja o połączeniu zostanie zalogowań tylko wtedy, gdyServletRequest.getAttribute()
będzie równenull
. Jeżeli wartością parametru będzieloguj
, to połączenie zostanie zalogowane tylko wtedy, gdy będzie spełniony ten warunek:ServletRequest.getAttribute("loguj") == null
. - fileDateFormat
Pozwala na określenie formatu daty w nazwie pliku z logiem. Jednocześnie decyduje o tym, jak często plik ten będzie rotowany. Aby włączyć rotowanie co godzinę, można ustawić wartość parametru tak:yyyy-MM-dd.HH
.
#1 by Rafal on 2010/08/23 - 14:34
Dobry wpis. Nie wiedzialem, ze da sie to w taki latwy sposob zalogowac. Swoja drgoa pisalem niedawno o tuningu logowania w tomcacie. Zapraszam: http://touk.pl/blog/2010/08/23/glimpse-on-tomcat-performance-tuning/ moze się kiedys do czegos przyda 😉
#2 by Łukasz Stelmach on 2010/08/23 - 14:41
Cieszę się, że się przydało. I dzięki za linka.
Pozdrawiam.