Dnevnici Tomcat ugrađenih u proljetne čizme
1. Uvod
Spring Boot dolazi s ugrađenim Tomcat poslužiteljem, što je vrlo zgodno. Međutim, prema zadanim postavkama ne možemo vidjeti Tomcatove zapisnike.
U ovom uputstvu naučit ćemo kako konfigurirajte Spring Boot tako da prikazuje Tomcatove interne i pristupne zapisnike putem aplikacije za igračke.
2. Primjer uzorka
Prije svega, kreirajmo REST API. Definirat ćemo a PozdravController da pozdravite korisnika:
@GetMapping ("/ greetings / {username}") javni niz getGreetings (@PathVariable ("username") String userName) {return "Hello" + userName + ", Good day ... !!!"; }
3. Vrste Tomcat dnevnika
Ugrađeni Tomcat pohranjuje dvije vrste zapisnika:
- Pristup dnevnicima
- Unutarnji zapisnici poslužitelja
The pristupni dnevnici voditi evidenciju svih zahtjeva koje obrađuje aplikacija. Ovi se dnevnici mogu koristiti za pratiti stvari poput broja pogodaka stranice i aktivnost korisničke sesije. U kontrastu, unutarnji zapisnici poslužitelja pomoći će nam riješiti probleme u našoj pokrenutoj aplikaciji.
4. Pristup dnevnicima
Zapisnici pristupa nisu omogućeni.
Ipak ih možemo lako omogućiti dodavanjem svojstva primjena.svojstva:
server.tomcat.accesslog.enabled = true
Slično tome, možemo koristiti VM argumente za omogućavanje dnevnika pristupa:
java -jar -Dserver.tomcat.basedir = tomcat -Dserver.tomcat.accesslog.enabled = true app.jar
Te će se datoteke dnevnika kreirati u privremenom direktoriju. Na primjer, u sustavu Windows, direktorij dnevnika pristupa izgledat će otprilike AppData \ Local \ Temp \ tomcat.2142886552084850151.40123 \ logs
4.1. Format
Dakle, s omogućenim ovim svojstvom, u našoj pokrenutoj aplikaciji vidjet ćemo nešto poput sljedećeg:
0: 0: 0: 0: 0: 0: 0: 1 - - [13 / Svibanj / 2019: 23: 14: 51 +0530] "GET / pozdrav / Harry HTTP / 1.1" 200 27 0: 0: 0: 0: 0: 0: 0: 1 - - [13 / svibanj / 2019: 23: 17: 23 +0530] "GET / greetings / Harry HTTP / 1.1" 200 27
Ovo su pristupni dnevnici i imaju format:
% h% l% u% t \ "% r \"%> s% b
Što možemo protumačiti kao:
% h - IP klijenta koji je poslao zahtjev, 0:0:0:0:0:0:0:1 u ovom slučaju
% l - identitet korisnika
% u - korisničko ime određeno HTTP autentifikacijom
% t - vrijeme primitka zahtjeva
% r - redak zahtjeva klijenta, GET / pozdrav / Harry HTTP / 1.1 u ovom slučaju
%> s - statusni kôd poslan s poslužitelja klijentu, poput 200 ovdje
% b - veličina odgovora klijentu ili 27 za ove zahtjeve
Budući da ovaj zahtjev nije imao autentificiranog korisnika, % l i% u otisnute crtice.
Zapravo, ako ako nedostaju bilo kakve informacije, Tomcat će ispisati crticu za taj utor.
4.2. Prilagođavanje dnevnika pristupa
Možemo nadjačati zadanu konfiguraciju Spring Boot dodavanjem nekoliko svojstava u primjena.svojstva.
Prvo, da biste promijenili zadani naziv datoteke dnevnika:
server.tomcat.accesslog.suffix = .log server.tomcat.accesslog.prefix = access_log server.tomcat.accesslog.file-date-format = .yyyy-MM-dd
Također, možemo promijeniti mjesto datoteka dnevnika:
server.tomcat.basedir = tomcat server.tomcat.accesslog.directory = zapisnici
Konačno, možemo nadjačati način zapisovanja dnevnika u datoteku dnevnika:
server.tomcat.accesslog.pattern = uobičajeno
U Spring Boot-u postoji još nekoliko konfigurabilnih svojstava.
5. Unutarnji dnevnici
Interni dnevnici Tomcat poslužitelja vrlo su korisni za rješavanje bilo kakvih problema na strani poslužitelja.
Da bismo pregledali ove zapisnike, u nastavku moramo dodati konfiguraciju prijave primjena.svojstva:
logging.level.org.apache.tomcat = DEBUG logging.level.org.apache.catalina = DEBUG
A onda ćemo vidjeti nešto poput:
2019-05-17 15: 41: 07.261 DEBUG 31160 --- [0124-Acceptor-0] o.apache.tomcat.util.threads.LimitLatch: Odbrojavanje [http-nio-40124-Acceptor-0] zasun = 1 2019-05-17 15: 41: 07.262 DEBUG 31160 --- [0124-Acceptor-0] o.apache.tomcat.util.threads.LimitLatch: Odbrojavanje [http-nio-40124-Acceptor-0] zasun = 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 [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: Postavi que ry kodiranje niza na UTF-8 2019-05-17 15: 41: 07.294 DEBUG 31160 --- [io-40124-exec-1] oatutil.http.Rfc6265CookieProcessor: Cookies: Raščlanjivanje b []: jenkins-timestamper-offset = -19800000 2019-05-17 15: 41: 07.296 DEBUG 31160 --- [io-40124-exec-1] oacauthenticator.AuthenticatorBase: Zahtjev za sigurnosnu provjeru GET / greetings / Harry 2019-05-17 15: 41: 07.296 DEBUG 31160 --- [io-40124-exec-1] org.apache.catalina.realm.RealmBase: Nisu definirana primjenjiva ograničenja
6. Zaključak
U ovom kratkom članku naučili smo razliku između Tomcat-ovih internih i pristupnih dnevnika. Zatim smo vidjeli kako ih omogućiti i prilagoditi.
Obavezno provjerite uzorak na GitHubu.