[JAVA] Geben Sie das integrierte Tomcat-Zugriffsprotokoll mit Spring Boot an die Standardausgabe aus

Überblick

Der in Spring Boot integrierte Tomcat kann automatisch Zugriffsprotokolle in eine Datei ausgeben. In diesem Artikel werde ich Ihnen zeigen, wie Sie dies in der Standardausgabe ausgeben.

Umgebung

Geben Sie zunächst das Zugriffsprotokoll aus

Schreiben Sie einen RestController, der ein nettes GET und POST erhält.

@RequestMapping("hello")
@RestController
public class HelloController {

    @GetMapping("")
    public String hello() {
        return "Hello, world!";
    }

    @PostMapping("")
    public String message(@RequestBody String message) {
        return "Hello, " + message + "!";
    }
}

Sie können das Zugriffsprotokoll ausgeben, indem Sie die folgenden Einstellungen in application.properties beschreiben.

server.tomcat.accesslog.enabled=true
server.tomcat.basedir=/path/to/dir
server.tomcat.accesslog.directory=logs
server.tomcat.accesslog.suffix=.log
server.tomcat.accesslog.prefix=access_log
server.tomcat.accesslog.file-date-format=.yyyy-MM-dd

Als ich es tatsächlich lokal traf, wurde das Zugriffsprotokoll an /path/to/dir/logs/access_log.yyyy-MM-dd.log ausgegeben.

$ curl localhost:8080/hello
Hello, world!
curl -H "Content-Type: text/plain" localhost:8080/hello -d "mito"
Hello, mito!
$ ls /path/to/dir/logs
access_log.2019-11-08.log
$ cat /path/to/dir/logs/access_log.2019-11-08.log
0:0:0:0:0:0:0:1 - - [08/Nov/2019:17:59:56 +0900] "GET /hello HTTP/1.1" 200 13
0:0:0:0:0:0:0:1 - - [08/Nov/2019:18:00:01 +0900] "POST /hello HTTP/1.1" 200 16

Ausgabezugriffsprotokoll auf Standardausgabe

Wie auch in der Twelve-Factor App erwähnt ist es für moderne Anwendungen üblicher, Protokolle in Standardausgabe auszugeben.

Es gibt verschiedene Möglichkeiten, die Standardausgabe herauszuholen.

Ausgabe nach / dev / stdout

Sie können auf die Standardausgabe ausgeben, indem Sie die Einstellungen vornehmen und die Ausgabezieldatei auf / dev / stdout setzen.

server.tomcat.accesslog.enabled=true
server.tomcat.basedir=/dev
server.tomcat.accesslog.directory=stdout
server.tomcat.accesslog.suffix=
server.tomcat.accesslog.prefix=
server.tomcat.accesslog.file-date-format=

Verwenden Sie den Logback-Zugriff

In einigen Fällen möchten Sie möglicherweise vermeiden, / dev / stdout direkt zu berühren. Sie können das Ausgabeziel mithilfe von logback-access auf Standardausgabe setzen.

Platzieren Sie zunächst logback-access.xml in src / main / resources / conf /. Logback-access.xml wird wie folgt beschrieben, damit es an stdout ausgegeben wird.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <!--  combined log format-->
      <pattern>combined</pattern>
    </encoder>
  </appender>

  <appender-ref ref="STDOUT" />

</configuration>

Fügen Sie eine Logback-Zugriffsabhängigkeit hinzu (unten für Gradle).

dependencies {
  ...
+	implementation group: 'ch.qos.logback', name: 'logback-access', version: '1.2.3'
}

Durch das Erstellen einer Bean von TomcatServletWebSErverFactory werden die Einstellungen im integrierten Tomcat wiedergegeben.

@Configuration
public class TomcatLoggingConfig {
    @Bean
    public TomcatServletWebServerFactory servletContainer() {
        TomcatServletWebServerFactory tomcatServletWebServerFactory = new TomcatServletWebServerFactory();
        //LogbackValve bezieht sich auf Ressourcen und darunter, dies ist also Logback-access.Der Inhalt von XML wird wiedergegeben
        tomcatServletWebServerFactory.addContextValves(new LogbackValve());
        return tomcatServletWebServerFactory;
    }
}

Wenn Sie es starten und tatsächlich eine Anfrage stellen, können Sie sehen, dass das folgende Protokoll ausgegeben wird.

0:0:0:0:0:0:0:1 - - [08/11/2019:18:38:29 +0900] "GET /hello HTTP/1.1" 200 13 "-" "curl/7.54.0"
0:0:0:0:0:0:0:1 - - [08/11/2019:18:38:20 +0900] "POST /hello HTTP/1.1" 200 16 "-" "curl/7.54.0"

Es ist nicht erforderlich, application.properties festzulegen.

Verwenden Sie den Logback-Access-Spring-Boot-Starter

Bei Verwendung von Logback-Access-Spring-Boot-Starter werden die obigen Logback-Access-Einstellungen automatisch wiedergegeben. Werde es tun.

Fügen Sie eine Abhängigkeit hinzu,

dependencies {
  ...
+ implementation group: 'net.rakugakibox.spring.boot', name: 'logback-access-spring-boot-starter', version: '2.7.1'
}

Wenn Sie logback-access.xml direkt unter "src / main / resources" platzieren, wird das Zugriffsprotokoll an die Standardausgabe ausgegeben. Praktisch...!

Referenz

https://www.baeldung.com/spring-boot-embedded-tomcat-logs http://logback.qos.ch/access.html https://stackoverflow.com/questions/36780680/how-do-you-tell-spring-boot-to-send-the-embedded-tomcats-access-logs-to-stdout?answertab=votes#tab-top https://github.com/akihyro/logback-access-spring-boot-starter

Recommended Posts

Geben Sie das integrierte Tomcat-Zugriffsprotokoll mit Spring Boot an die Standardausgabe aus
Fluss bis zur Ausgabe von Tabellendaten, die mit Spring Boot angezeigt werden sollen
Spring Boot-Protokoll im JSON-Format ausgeben
Verwendung von MyBatis2 (iBatis) mit Spring Boot 1.4 (Spring 4)
Verwendung des eingebauten h2db mit Federstiefel
Anforderungs- und Antwortprotokolle mit Spring Boot ausgeben
Versuchen Sie, die Anmeldefunktion mit Spring Boot zu implementieren
Versuchen Sie, die Migration mit Spring Boot Flyway zu automatisieren
[Java] Artikel zum Hinzufügen einer Validierung mit Spring Boot 2.3.1.
Ich wollte Spring Boot in einem Multiprojekt gradle
Die Tomcat 8.5-Protokollausgabe wurde durch Log4j2.8 oder höher ersetzt
[Einführung in Spring Boot] Authentifizierungsfunktion mit Spring Security
Mit Spring Boot herunterladen
Einstellungen für die Verbindung zu MySQL mit Spring Boot + Spring JDBC
Ordnen Sie DTO automatisch Entitäten mit der Spring Boot-API zu
Greifen Sie mit jdbcTemplate auf das integrierte h2db des Spring Boot zu
Protokoll mit slf4j + Logback mit Maven in externe Datei ausgeben
So geben Sie einen Standard aus einem Array mit for Each aus
Stellen Sie das Spring Boot-Projekt in XAMPP für Tomcat bereit
Booten nach Umgebung mit Spring Boot of Maven
Versuch, SSR Vue.js mit Spring Boot und GraalJS zu verwenden
Versuchen Sie Spring Boot von 0 bis 100.
Generieren Sie mit Spring Boot einen Barcode
Hallo Welt mit Spring Boot
Implementieren Sie GraphQL mit Spring Boot
Beginnen Sie mit Spring Boot
Hallo Welt mit Spring Boot!
Schneiden Sie SQL in die Eigenschaftendatei mit jdbcTemplate von Spring Boot aus
Führen Sie LIFF mit Spring Boot aus
SNS-Login mit Spring Boot
Einführung in Spring Boot ~ ~ DI ~
Datei-Upload mit Spring Boot
Spring Boot beginnt mit dem Kopieren
Bis INSERT und SELECT für Postgres mit Spring Boot und Thymianblatt
Steuerprotokollausgabe mit Doma2
Einführung in Spring Boot ② ~ AOP ~
Stellen Sie mit spring boot + spring jpa eine Verbindung zur Datenbank her und führen Sie die CRUD-Operation durch
Spring Boot beginnend mit Docker
Beispiel für eine Java-Standardprotokollausgabe
Hallo Welt mit Spring Boot
Setzen Sie Cookies mit Spring Boot
Verwenden Sie Spring JDBC mit Spring Boot
Modul mit Spring Boot hinzufügen
Erste Schritte mit Spring Boot
Einführung in Spring Boot Teil 1
Erstellen Sie mit Spring Boot einen Mikrodienst
Mail mit Spring Boot verschicken
Ich habe versucht, mit Swagger mit Spring Boot zu beginnen
[Java] Ich möchte Standardeingabe und Standardausgabe mit JUnit testen
Einführung in Spring Boot x Offene API ~ Offene API, erstellt mit Generationslückenmuster ~
So erstellen Sie mit Spring Boot einen eigenen Controller, der / error entspricht
Beispielcode zum Testen eines Spring Boot-Controllers mit MockMvc
Verwenden Sie die Standardauthentifizierung mit Spring Boot
gRPC auf Spring Boot mit grpc-spring-boot-Starter
Erstellen Sie eine App mit Spring Boot 2
Hot Deploy mit Spring Boot-Entwicklung
Datenbankverknüpfung mit doma2 (Spring Boot)
So stellen Sie Spring Boot + PostgreSQL ein
Spring Boot Programmierung mit VS Code
Bis "Hallo Welt" mit Spring Boot