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.