Demander un exemple de sortie du journal des paramètres Java et Spring MVC

Préface

J'utilise Spring MVC ** Je veux enregistrer l'URL de la requête et les paramètres de la requête! ** ** Cela arrivait souvent, et à chaque fois que je créais une classe de filtre dédiée,

Ne serait-il pas heureux si je le laissais dans l'article pour moi-même?

Je l'ai pensé et décrit. C'est une note tout à fait personnelle.

environnement

Exemple de code

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("Commencer le traitement. URI: %s", uri));

        //Traitez le paramètre de demande et sortez-le sous forme de journal sur une ligne
        Map<String, String[]> params = httpReq.getParameterMap();
        StringBuilder strParams = new StringBuilder("Paramètres de demande: [");
        boolean isFirstParam = true;
        for (Map.Entry<String, String[]> param : params.entrySet()) {
            if (isFirstParam) {
                isFirstParam = false;
            } else {
                //Ajouter une virgule comme concaténateur pour le deuxième paramètre de requête et les suivants
                strParams.append(", ");
            }
            strParams.append(param.getKey()).append("=").append(Arrays.toString(param.getValue()));
        }
        strParams.append("]");
        log.info(strParams.toString());

        //Mise en œuvre de chaque processus
        chain.doFilter(request, response);

        int status = ((HttpServletResponse) response).getStatus();
        log.info(String.format("Sortie de traitement.Temps requis%d millis. STATUS=%d", System.currentTimeMillis() - start, status));
    }

    @Override
    public void destroy() {
    }
}

Échantillon de journal

2019-11-14 11:54:40.297  INFO 2001 --- [nio-8080-exec-1] com.example.demo.filter.LoggingFilter    :Commencer le traitement. URI: /demo/hello
2019-11-14 11:54:40.298  INFO 2001 --- [nio-8080-exec-1] com.example.demo.filter.LoggingFilter    :Paramètres de demande: [hoge=[1], fuga=[2]]
2019-11-14 11:54:40.327  INFO 2001 --- [nio-8080-exec-1] com.example.demo.filter.LoggingFilter    :Sortie de traitement.Temps requis 30 millis. STATUS=200

Supplément

Le format du journal reste la norme Spring Boot. Personnellement, la sortie du journal est écrite en japonais car elle est facile à comprendre en japonais. Parfois, je pense qu'il vaut mieux faire un peu plus, mais je l'écris souvent dans ce style. Il n'est pas surprenant que la déclaration For étendue soit un peu dégoûtante, mais elle est ennuyeuse et n'a pas été révisée.

Notez que ce filtre prend en charge les paramètres de tableau, mais ne prend pas en charge les fichiers joints.

Recommended Posts

Demander un exemple de sortie du journal des paramètres Java et Spring MVC
Exemple de sortie de journal standard Java
Sortie des journaux de demande et de réponse avec Spring Boot
Exemple de code pour la sortie du journal par Java + SLF4J + Logback
Configuration Java avec Spring MVC
Enregistrer la sortie dans un fichier en Java
Sortie du journal de la requête / réponse WebServiceTemplate
Sortie du journal Spring Data JPA SQL
Journal système de sortie par la technologie Spring AOP
Sortie du journal Spring Boot au format json
Spring Java
Implémenter l'entrée / sortie d'image avec Spring MVC
Juste des images d'entrée et de sortie avec Spring MVC
Enregistrer la conversion de type de paramètre de demande avec SpringBoot + MVC
[Java] sortie, variables
[Java] Exemple de génériques
Exemple de code Java 02
Exemple de code Java 03
Échantillon de sélénium (Java)
Exemple d'interface graphique Java
Exemple de code Java 04
Exemple de code Java 01
[Java] Spring DI ③
Exemple de programme d'entrée / sortie de fichier Java (jdk1.8 ou version ultérieure)