Spring Boot Embedded Tomcat-logboeken

1. Inleiding

Spring Boot wordt geleverd met een ingebouwde Tomcat-server, wat superhandig is. We kunnen de logboeken van Tomcat echter niet standaard zien.

In deze zelfstudie leren we hoe u dat moet doen configureer Spring Boot om de interne logboeken en toegangslogboeken van Tomcat te tonen via een speelgoedapplicatie.

2. Voorbeeldtoepassing

Laten we eerst een REST API maken. We zullen een GroetenController om de gebruiker te begroeten:

@GetMapping ("/ greetings / {gebruikersnaam}") public String getGreetings (@PathVariable ("gebruikersnaam") String gebruikersnaam) {return "Hallo" + gebruikersnaam + ", Goedendag ... !!!"; }

3. Tomcat-logboektypen

Embedded Tomcat slaat twee soorten logboeken op:

  • Toegang tot logboeken
  • Interne serverlogboeken

De toegang tot logboeken bijhouden van alle verzoeken die door de applicatie zijn verwerkt. Deze logboeken kunnen worden gebruikt om houd dingen bij zoals het aantal paginatreffers en gebruikerssessie activiteit. In tegenstelling tot, interne serverlogboeken helpt ons om eventuele problemen in onze actieve applicatie op te lossen.

4. Toegangslogboeken

Standaard zijn de toegangslogboeken niet ingeschakeld.

We kunnen ze echter gemakkelijk inschakelen door een eigenschap toe te voegen aan application.properties:

server.tomcat.accesslog.enabled = waar

Evenzo kunnen we VM-argumenten gebruiken om de toegangslogboeken in te schakelen:

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

Deze logfiles worden aangemaakt in een tijdelijke directory. In Windows ziet de map voor toegangslogboeken er bijvoorbeeld ongeveer zo uit AppData \ Local \ Temp \ tomcat.2142886552084850151.40123 \ logs

4.1. Formaat

Dus als deze eigenschap is ingeschakeld, zien we zoiets als het volgende in onze actieve applicatie:

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

Dit zijn de toegangslogboeken en ze hebben de volgende indeling:

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

Wat we kunnen interpreteren als:

% h - het IP-adres van de klant die het verzoek heeft verzonden, 0:0:0:0:0:0:0:1 in dit geval

% l - de identiteit van de gebruiker

% u - de gebruikersnaam bepaald door HTTP-authenticatie

% t - het tijdstip waarop het verzoek is ontvangen

% r - de verzoekregel van de klant, GET / groeten / Harry HTTP / 1.1 in dit geval

%> s - de statuscode die van de server naar de client wordt gestuurd, zoals 200 hier

% b - de omvang van de respons aan de cliënt, of 27 voor deze verzoeken

Aangezien dit verzoek geen geverifieerde gebruiker heeft, % l en% u gedrukte streepjes.

In feite, als als er informatie ontbreekt, zal Tomcat een streepje voor dat slot afdrukken.

4.2. Toegangslogboeken aanpassen

We kunnen de standaard Spring Boot-configuratie overschrijven door enkele eigenschappen toe te voegen in application.properties.

Ten eerste, om de standaard naam van het logboekbestand te wijzigen:

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

We kunnen ook de locatie van de logbestanden wijzigen:

server.tomcat.basedir = tomcat server.tomcat.accesslog.directory = logboeken

Ten slotte kunnen we de manier waarop logboeken in het logbestand worden geschreven, overschrijven:

server.tomcat.accesslog.pattern = algemeen

Er zijn ook een paar meer configureerbare eigenschappen in Spring Boot.

5. Interne logboeken

De interne logboeken van de Tomcat-server zijn erg handig om serverproblemen op te lossen.

Om deze logboeken te bekijken, moeten we onderstaande aanmeldingsconfiguratie toevoegen application.properties:

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

En dan zien we zoiets als:

2019-05-17 15: 41: 07.261 DEBUG 31160 --- [0124-Acceptor-0] o.apache.tomcat.util.threads.LimitLatch: optellen [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: optellen [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 attribuut 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: Stel que ry string codering naar UTF-8 2019-05-17 15: 41: 07.294 DEBUG 31160 --- [io-40124-exec-1] oatutil.http.Rfc6265CookieProcessor: Cookies: Parsing b []: jenkins-timestamper-offset = -19800000 2019-05-17 15: 41: 07.296 DEBUG 31160 --- [io-40124-exec-1] oacauthenticator.AuthenticatorBase: Verzoek om beveiligingscontrole GET / greetings / Harry 2019-05-17 15: 41: 07.296 DEBUG 31160 --- [io-40124-exec-1] org.apache.catalina.realm.RealmBase: geen toepasselijke beperkingen gedefinieerd

6. Conclusie

In dit korte artikel hebben we het verschil geleerd tussen de interne logboeken van Tomcat en de toegangslogboeken. Vervolgens hebben we gezien hoe we ze konden inschakelen en aanpassen.

Zorg ervoor dat je het voorbeeld bekijkt op GitHub.