Jarné zavádzanie vložených protokolov Tomcat
1. Úvod
Spring Boot sa dodáva so zabudovaným serverom Tomcat, ktorý je veľmi praktický. Predvolene však nevidíme denníky Tomcatu.
V tomto tutoriále sa dozvieme, ako na to nakonfigurujte Spring Boot tak, aby zobrazoval interné a prístupové protokoly Tomcat prostredníctvom aplikácie hračky.
2. Ukážka aplikácie
Najskôr si vytvorme REST API. Definujeme a ZdravímOvládač pozdraviť užívateľa:
@GetMapping ("/ greetings / {username}") public String getGreetings (@PathVariable ("username") String userName) {return "Hello" + userName + ", Good day ... !!!"; }
3. Typy protokolov Tomcat
Integrovaný Tomcat ukladá dva typy protokolov:
- Prístup k denníkom
- Interné protokoly servera
The prístupové denníky viesť záznamy o všetkých žiadostiach spracovaných aplikáciou. Tieto protokoly možno použiť na sledovať veci, ako je počet prístupov na stránku a aktivita relácie používateľa. Naproti tomu interné protokoly servera nám pomôže vyriešiť akékoľvek problémy v našej spustenej aplikácii.
4. Prístup k denníkom
V predvolenom nastavení nie sú protokoly prístupu povolené.
Ľahko ich však môžeme povoliť pridaním vlastnosti do application.properties:
server.tomcat.accesslog.enabled = true
Podobne môžeme použiť argumenty VM na povolenie protokolov prístupu:
java -jar -Dserver.tomcat.basedir = tomcat -Dserver.tomcat.accesslog.enabled = true app.jar
Tieto súbory denníka sa vytvoria v dočasnom adresári. Napríklad v systéme Windows bude adresár prístupových protokolov vyzerať asi takto AppData \ Local \ Temp \ tomcat.2142886552084850151.40123 \ logs
4.1. Formát
Keď je teda táto vlastnosť povolená, v našej spustenej aplikácii by sme videli niečo podobné ako toto:
0: 0: 0: 0: 0: 0: 0: 1 - - [13 / May / 2019: 23: 14: 51 +0530] „GET / pozdravy / Harry HTTP / 1.1“ 200 27 0: 0: 0: 0: 0: 0: 0: 1 - - [13 / May / 2019: 23: 17: 23 +0530] „GET / pozdravy / Harry HTTP / 1.1“ 200 27
Toto sú protokoly prístupu a majú formát:
% h% l% u% t \ "% r \"%> s% b
Čo môžeme interpretovať ako:
% h - IP klienta, ktorý poslal žiadosť, 0:0:0:0:0:0:0:1 v tomto prípade
% l - totožnosť používateľa
% u - meno používateľa určené pomocou autentifikácie HTTP
% t - čas prijatia žiadosti
% r - riadok žiadosti od klienta, ZÍSKAŤ / pozdravy / Harry HTTP / 1.1 v tomto prípade
%> s - stavový kód odoslaný zo servera klientovi, napríklad 200 tu
% b - veľkosť odpovede klientovi alebo 27 pre tieto žiadosti
Pretože táto žiadosť nemala overeného používateľa, % la% u tlačené čiarky.
V skutočnosti, ak akékoľvek informácie chýbajú, Tomcat vytlačí pre tento slot pomlčku.
4.2. Prispôsobenie protokolov prístupu
Predvolenú konfiguráciu Spring Boot môžeme prepísať pridaním niekoľkých vlastností do application.properties.
Najskôr zmeniť predvolený názov súboru protokolu:
server.tomcat.accesslog.suffix = .log server.tomcat.accesslog.prefix = access_log server.tomcat.accesslog.file-date-format = .rrrr-MM-dd
Môžeme tiež zmeniť umiestnenie súborov denníka:
server.tomcat.basedir = tomcat server.tomcat.accesslog.directory = protokoly
Na záver môžeme prepísať spôsob, akým sa protokoly zapisujú do súboru denníka:
server.tomcat.accesslog.pattern = bežné
V Spring Boot je tiež niekoľko ďalších konfigurovateľných vlastností.
5. Interné protokoly
Interné protokoly servera Tomcat sú veľmi užitočné pri riešení akýchkoľvek problémov na strane servera.
Ak chcete zobraziť tieto denníky, musíme pridať konfiguráciu prihlásenia nižšie application.properties:
logging.level.org.apache.tomcat = DEBUG logging.level.org.apache.catalina = DEBUG
A potom uvidíme niečo ako:
2019-05-17 15:41: 07.261 DEBUG 31160 --- [0124-Acceptor-0] o.apache.tomcat.util.threads.LimitLatch: Počítanie západky [http-nio-40124-Acceptor-0] = 1 2019-05-17 15:41: 07.262 DEBUG 31160 --- [0124-Acceptor-0] o.apache.tomcat.util.threads.LimitLatch: Počítanie západky [http-nio-40124-Acceptor-0] = 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] mmMbeansDescriptorsIntrospectionSource: 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] oatomcat.util.modeler.BaseModelMBean: preRegister [chránený e-mailom] 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.Parametre: Nastaviť poradie ry kódovanie reťazcov do UTF-8 2019-05-17 15:41: 07.294 DEBUG 31160 --- [io-40124-exec-1] oatutil.http.Rfc6265CookieProcessor: Cookies: Analýza b []: jenkins-timestamper-offset = -19800000 2019-05-17 15:41: 07.296 DEBUG 31160 --- [io-40124-exec-1] oacauthenticator.AuthenticatorBase: žiadosť o kontrolu zabezpečenia ZÍSKAŤ / pozdravy / Harry 2019-05-17 15:41: 07.296 DEBUG 31160 --- [io-40124-exec-1] org.apache.catalina.realm.RealmBase: Nie sú definované žiadne príslušné obmedzenia
6. Záver
V tomto rýchlom článku sme sa dozvedeli rozdiel medzi internými a prístupovými protokolmi Tomcat. Potom sme videli, ako ich povoliť a prispôsobiť.
Uistite sa, že ste si vzorku prezreli na GitHub.