Beispiel für die Ausgabe eines Parameterprotokollprotokolls Java & Spring MVC

Vorwort

Ich benutze Spring MVC ** Ich möchte die Anforderungs-URL und die Anforderungsparameter protokollieren! ** ** ** Das passierte oft und jedes Mal, wenn ich eine dedizierte Filterklasse erstellte,

Wäre es nicht glücklich, wenn ich es für mich selbst im Artikel belassen würde?

Ich dachte und beschrieb es. Es ist eine ganz persönliche Notiz.

Umgebung

Codebeispiel

package com.example.demo.filter;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.Map;

@Slf4j
@Component
public class LoggingFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest httpReq = ((HttpServletRequest)request);
        String uri = httpReq.getRequestURI();

        long start = System.currentTimeMillis();
        log.info(String.format("Starten Sie die Verarbeitung. URI: %s", uri));

        //Verarbeiten Sie den Anforderungsparameter und geben Sie ihn als einzeiliges Protokoll aus
        Map<String, String[]> params = httpReq.getParameterMap();
        StringBuilder strParams = new StringBuilder("Parameter anfordern: [");
        boolean isFirstParam = true;
        for (Map.Entry<String, String[]> param : params.entrySet()) {
            if (isFirstParam) {
                isFirstParam = false;
            } else {
                //Fügen Sie ein Komma als Verkettung für den zweiten und die nachfolgenden Anforderungsparameter hinzu
                strParams.append(", ");
            }
            strParams.append(param.getKey()).append("=").append(Arrays.toString(param.getValue()));
        }
        strParams.append("]");
        log.info(strParams.toString());

        //Implementierung jedes Prozesses
        chain.doFilter(request, response);

        int status = ((HttpServletResponse) response).getStatus();
        log.info(String.format("Verarbeitung beenden.Benötigte Zeit%d millis. STATUS=%d", System.currentTimeMillis() - start, status));
    }

    @Override
    public void destroy() {
    }
}

Beispiel protokollieren

2019-11-14 11:54:40.297  INFO 2001 --- [nio-8080-exec-1] com.example.demo.filter.LoggingFilter    :Starten Sie die Verarbeitung. URI: /demo/hello
2019-11-14 11:54:40.298  INFO 2001 --- [nio-8080-exec-1] com.example.demo.filter.LoggingFilter    :Parameter anfordern: [hoge=[1], fuga=[2]]
2019-11-14 11:54:40.327  INFO 2001 --- [nio-8080-exec-1] com.example.demo.filter.LoggingFilter    :Verarbeitung beenden.Zeitaufwand 30 Millis. STATUS=200

Ergänzung

Das Protokollformat bleibt der Spring Boot-Standard. Persönlich ist die Protokollausgabe auf Japanisch geschrieben, da sie auf Japanisch leicht zu verstehen ist. Manchmal denke ich, dass es besser ist, dies ein bisschen mehr zu tun, aber ich schreibe es oft in diesem Stil. Es ist nicht überraschend, dass die erweiterte For-Anweisung etwas ekelhaft ist, aber sie ist ärgerlich und wurde nicht überarbeitet.

Beachten Sie, dass dieser Filter Array-Parameter unterstützt, angehängte Dateien jedoch nicht.

Recommended Posts

Beispiel für die Ausgabe eines Parameterprotokollprotokolls Java & Spring MVC
Beispiel für eine Java-Standardprotokollausgabe
Anforderungs- und Antwortprotokolle mit Spring Boot ausgeben
Beispielcode für die Protokollausgabe von Java + SLF4J + Logback
Java-Konfiguration mit Spring MVC
Protokollausgabe in Datei in Java
Protokollausgabe der WebServiceTemplate-Anforderung / Antwort
Spring Data JPA SQL-Protokollausgabe
Ausgabesystemprotokoll mit Spring AOP-Technologie
Spring Boot-Protokoll im JSON-Format ausgeben
Frühling Java
Implementieren Sie die Bildeingabe / -ausgabe mit Spring MVC
Geben Sie einfach Bilder mit Spring MVC ein und geben Sie sie aus
Registrieren Sie die Konvertierung des Anforderungsparametertyps mit SpringBoot + MVC
[Java] Ausgabe, Variablen
[Java] Generics-Beispiel
Java-Beispielcode 02
Java-Beispielcode 03
Selenprobe (Java)
Java GUI Beispiel
Java-Beispielcode 04
Java-Beispielcode 01
[Java] Spring DI ③
Beispielprogramm für die Eingabe / Ausgabe von Java-Dateien (jdk1.8 oder höher)