Вградени дневници на Tomcat за пролетни обувки

1. Въведение

Spring Boot се предлага с вграден сървър Tomcat, което е изключително удобно. По подразбиране обаче не можем да видим регистрационните файлове на Tomcat.

В този урок ще научим как да конфигурираме Spring Boot за показване на вътрешните дневници и достъп на Tomcat чрез приложение за играчки.

2. Примерно приложение

Първо, нека създадем REST API. Ще определим GreetingsController, за да поздравим потребителя:

@GetMapping("/greetings/{username}") public String getGreetings(@PathVariable("username") String userName) { return "Hello " + userName + ", Good day...!!!"; }

3. Типове дневници на Tomcat

Вграденият Tomcat съхранява два вида регистрационни файлове:

  • Достъп до дневници
  • Вътрешни регистрационни файлове на сървъра

На трупи достъп поддържат регистрите на всички искания, обработвани от приложението. Тези дневници могат да се използват за проследяване на неща като броя посещения на страницата и активността на потребителската сесия . За разлика от това, вътрешните регистрационни файлове на сървъра ще ни помогнат да отстраним всички проблеми в нашето работещо приложение.

4. Достъп до дневници

По подразбиране регистрационните файлове за достъп не са активирани.

Въпреки това можем лесно да ги активираме, като добавим свойство към application.properties :

server.tomcat.accesslog.enabled=true

По подобен начин можем да използваме VM аргументи, за да активираме регистрационните файлове за достъп:

java -jar -Dserver.tomcat.basedir=tomcat -Dserver.tomcat.accesslog.enabled=true app.jar

Тези регистрационни файлове ще бъдат създадени във временна директория. Например в Windows директорията за регистрационни файлове за достъп ще изглежда нещо като AppData \ Local \ Temp \ tomcat.2142886552084850151.40123 \ logs

4.1. Формат

Така че, с активирано това свойство, ще видим нещо като следното в нашето работещо приложение:

0:0:0:0:0:0:0:1 - - [13/May/2019:23:14:51 +0530] "GET /greetings/Harry HTTP/1.1" 200 27 0:0:0:0:0:0:0:1 - - [13/May/2019:23:17:23 +0530] "GET /greetings/Harry HTTP/1.1" 200 27

Това са дневниците за достъп и те имат формат:

%h %l %u %t \"%r\" %>s %b

Което можем да интерпретираме като:

% h - клиентският IP, който е изпратил заявката, 0: 0: 0: 0: 0: 0: 0: 1 в този случай

% l - самоличността на потребителя

% u - потребителското име, определено чрез HTTP удостоверяване

% t - времето на получаване на заявката

% r - редът за заявка от клиента, GET / greetings / Harry HTTP / 1.1 в този случай

%> s - кодът на състоянието, изпратен от сървъра до клиента, като 200 тук

% b - размерът на отговора на клиента или 27 за тези заявки

Тъй като тази заявка няма удостоверен потребител, % l и% u отпечатва тирета.

Всъщност, ако липсва някаква информация, Tomcat ще отпечата тире за този слот .

4.2. Персонализиране на регистрационните файлове за достъп

Можем да заменим конфигурацията на Spring Boot по подразбиране, като добавим няколко свойства в application.properties.

Първо, за да промените името на регистрационния файл по подразбиране:

server.tomcat.accesslog.suffix=.log server.tomcat.accesslog.prefix=access_log server.tomcat.accesslog.file-date-format=.yyyy-MM-dd

Също така можем да променим местоположението на регистрационните файлове:

server.tomcat.basedir=tomcat server.tomcat.accesslog.directory=logs

И накрая, можем да заменим начина, по който се записват регистрационните файлове в регистрационния файл:

server.tomcat.accesslog.pattern=common

Има и още няколко конфигурируеми свойства в Spring Boot.

5. Вътрешни дневници

Вътрешните регистрационни файлове на сървъра на Tomcat са много полезни за решаване на проблеми от страна на сървъра.

За да прегледаме тези дневници, трябва да добавим по-долу конфигурация за регистриране в application.properties :

logging.level.org.apache.tomcat=DEBUG logging.level.org.apache.catalina=DEBUG

И тогава ще видим нещо като:

2019-05-17 15:41:07.261 DEBUG 31160 --- [0124-Acceptor-0] o.apache.tomcat.util.threads.LimitLatch : Counting up[http-nio-40124-Acceptor-0] latch=1 2019-05-17 15:41:07.262 DEBUG 31160 --- [0124-Acceptor-0] o.apache.tomcat.util.threads.LimitLatch : Counting up[http-nio-40124-Acceptor-0] latch=2 2019-05-17 15:41:07.278 DEBUG 31160 --- [io-40124-exec-1] org.apache.tomcat.util.modeler.Registry : Managed= Tomcat:type=RequestProcessor,worker="http-nio-40124",name=HttpRequest1 ... 2019-05-17 15:41:07.279 DEBUG 31160 --- [io-40124-exec-1] m.m.MbeansDescriptorsIntrospectionSource : Introspected attribute virtualHost public java.lang.String org.apache.coyote.RequestInfo.getVirtualHost() null ... 2019-05-17 15:41:07.280 DEBUG 31160 --- [io-40124-exec-1] o.a.tomcat.util.modeler.BaseModelMBean : preRegister [email protected] Tomcat:type=RequestProcessor,worker="http-nio-40124",name=HttpRequest1 2019-05-17 15:41:07.292 DEBUG 31160 --- [io-40124-exec-1] org.apache.tomcat.util.http.Parameters : Set query string encoding to UTF-8 2019-05-17 15:41:07.294 DEBUG 31160 --- [io-40124-exec-1] o.a.t.util.http.Rfc6265CookieProcessor : Cookies: Parsing b[]: jenkins-timestamper-offset=-19800000 2019-05-17 15:41:07.296 DEBUG 31160 --- [io-40124-exec-1] o.a.c.authenticator.AuthenticatorBase : Security checking request GET /greetings/Harry 2019-05-17 15:41:07.296 DEBUG 31160 --- [io-40124-exec-1] org.apache.catalina.realm.RealmBase : No applicable constraints defined

6. Заключение

В тази бърза статия научихме разликата между вътрешните дневници на Tomcat и дневниците за достъп. След това видяхме как да ги активираме и персонализираме.

Не забравяйте да проверите пробата на GitHub.