Spring Boot Embedded Tomcat Logs
1. Introduksjon
Spring Boot kommer med en innebygd Tomcat-server, noe som er veldig praktisk. Vi kan imidlertid ikke se Tomcats logger som standard.
I denne opplæringen lærer vi hvordan du gjør det konfigurer Spring Boot for å vise Tomcats interne logger og tilgangslogger via en leketøysapplikasjon.
2. Eksempel på søknad
Først av alt, la oss lage en REST API. Vi definerer en HilsenKontroller for å hilse på brukeren:
@GetMapping ("/ greetings / {username}") public String getGreetings (@PathVariable ("username") String userName) {return "Hello" + userName + ", God dag ... !!!"; }
3. Tomcat-loggtyper
Embedded Tomcat lagrer to typer logger:
- Få tilgang til logger
- Interne serverlogger
De tilgang logger føre oversikt over alle forespørslene som behandles av søknaden. Disse loggene kan brukes til spore ting som antall treff på sider og brukerøktaktivitet. I motsetning, interne serverlogger vil hjelpe oss med å feilsøke eventuelle problemer i vårt applikasjon som kjører.
4. Tilgangslogger
Tilgangsloggene er som standard ikke aktivert.
Vi kan imidlertid enkelt aktivere dem ved å legge til en eiendom i application.properties:
server.tomcat.accesslog.enabled = true
På samme måte kan vi bruke VM-argumenter for å aktivere tilgangsloggene:
java -jar -Dserver.tomcat.basedir = tomcat -Dserver.tomcat.accesslog.enabled = true app.jar
Disse loggfilene blir opprettet i en midlertidig katalog. For eksempel vil katalogen for tilgangslogger på Windows se ut som på Windows AppData \ Local \ Temp \ tomcat.2142886552084850151.40123 \ logs
4.1. Format
Så når denne egenskapen er aktivert, ser vi noe som følger i vårt applikasjon som kjører:
0: 0: 0: 0: 0: 0: 0: 1 - - [13 / Mai / 2019: 23: 14: 51 +0530] "GET / hilsen / Harry HTTP / 1.1" 200 27 0: 0: 0: 0: 0: 0: 0: 1 - - [13 / Mai / 2019: 23: 17: 23 +0530] "GET / hilsen / Harry HTTP / 1.1" 200 27
Dette er tilgangsloggene, og de har formatet:
% h% l% u% t \ "% r \"%> s% b
Som vi kan tolke som:
% h - klientens IP som har sendt forespørselen, 0:0:0:0:0:0:0:1 i dette tilfellet
% l - identiteten til brukeren
% u - brukernavnet bestemt av HTTP-godkjenning
% t - tidspunktet forespørselen ble mottatt
% r - forespørselslinjen fra klienten, FÅ / hilsen / Harry HTTP / 1.1 i dette tilfellet
%> s - statuskoden sendt fra serveren til klienten, som 200 her
% b - størrelsen på svaret til klienten, eller 27 for disse forespørslene
Siden denne forespørselen ikke hadde en autentisert bruker, % l og% u trykte bindestreker.
Faktisk, hvis mangler noen informasjon, vil Tomcat skrive ut et dashbord for det sporet.
4.2. Tilpasse tilgangslogger
Vi kan overstyre standard Spring Boot-konfigurasjon ved å legge til få egenskaper i application.properties.
For det første for å endre standard loggfilnavn:
server.tomcat.accesslog.suffix = .log server.tomcat.accesslog.prefix = access_log server.tomcat.accesslog.file-date-format = .yyyy-MM-dd
Vi kan også endre plasseringen av loggfilene:
server.tomcat.basedir = tomcat server.tomcat.accesslog.directory = logger
Til slutt kan vi overstyre måten logger skrives i loggfilen:
server.tomcat.accesslog.pattern = vanlig
Det er også noen flere konfigurerbare egenskaper i Spring Boot.
5. Interne logger
Tomcat-serverens interne logger er veldig nyttige for å løse eventuelle problemer på serversiden.
For å se disse loggene, må vi legge til under loggkonfigurasjonen i application.properties:
logging.level.org.apache.tomcat = DEBUG logging.level.org.apache.catalina = DEBUG
Og så får vi se noe sånt som:
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] mmMbeansDescriptorsIntrospectionSource: Introspected attribute virtualHost public java.lang.String org.apache. coyote.RequestInfo.getVirtualHost () null ... 17.05.2019 15: 41: 07.280 DEBUG 31160 --- [io-40124-exec-1] oatomcat.util.modeler.BaseModelMBean: preRegister [email protected] Tomcat : type = RequestProcessor, arbeider = "http-nio-40124", navn = HttpRequest1 17.05.2019 15: 41: 07.292 DEBUG 31160 --- [io-40124-exec-1] org.apache.tomcat.util. http Parameter: Angi que ry strengkoding til UTF-8 17.05.2019 15: 41: 07.294 DEBUG 31160 --- [io-40124-exec-1] oatutil.http.Rfc6265CookieProsessor: Cookies: Parsing b []: jenkins-timestamper-offset = -19800000 17.05.2019 15: 41: 07.296 DEBUG 31160 --- [io-40124-exec-1] oacauthenticator.AuthenticatorBase: Sikkerhetskontrollforespørsel GET / hilsen / Harry 2019-05-17 15: 41: 07.296 DEBUG 31160 --- [io-40124-exec-1] org.apache.catalina.realm.RealmBase: Ingen gjeldende begrensninger definert
6. Konklusjon
I denne raske artikkelen har vi lært forskjellen mellom Tomcats interne logger og tilgangslogger. Så så vi hvordan du aktiverer og tilpasser dem.
Sørg for å sjekke ut prøven på GitHub.