什么是 Spring Boot Webflux 相当于 Morgan JS 库?

克莱门特

Javascript 有一个很棒的库,叫做morgan,可以记录所有传入的 http 请求。想知道 Java/Kotlin 中是否有一个等效的库来记录 spring boot webflux 请求。

克莱门特

在查看了这个repo之后,这就是最终为我工作的东西

我也整夜尝试获取请求正文,但不断收到错误消息:每个请求仅单个订阅者。这要么是不可能的,要么是非常困难的,要么是在请求主体较大的情况下不推荐(因为它可能会阻塞您的服务器)。因此,如果您想在发布请求中记录变量,我强烈建议您将@RequestBody对象转换@RequestParam查询参数。

package com.example.demo

import org.slf4j.LoggerFactory
import org.springframework.stereotype.Component
import org.springframework.web.server.ServerWebExchange
import org.springframework.web.server.WebFilter
import org.springframework.web.server.WebFilterChain
import reactor.core.publisher.Mono


@Component
class LogFilter: WebFilter {

    private val logger = LoggerFactory.getLogger(LogFilter::class.java)

    override fun filter(exchange: ServerWebExchange, chain: WebFilterChain): Mono<Void> {
        val startTime = System.currentTimeMillis()
        val request = exchange.request
        val path = request.uri.path

        val requestPrintMap = mutableMapOf<Any, Any>()
        requestPrintMap["headers"] = request.headers
        requestPrintMap["uri"] = request.uri
        requestPrintMap["params"] = request.queryParams

        return chain
                .filter(exchange)
                .doAfterTerminate {

            logger.info("Served '{}' as {} in {} msec",
                    path,
                    exchange.response.statusCode,
                    System.currentTimeMillis() - startTime)
        }
    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

生产相当于Spring Boot EmbeddedServletContainerCustomizer

来自分类Dev

生产相当于Spring Boot EmbeddedServletContainerCustomizer

来自分类Dev

google guice 中的 Spring 调度程序相当于什么?

来自分类Dev

什么相当于MATLAB?

来自分类Dev

相当于node.js http模块的“ req.url”的express.js是什么?

来自分类常见问题

在react.js中相当于ng-if是什么?

来自分类Dev

Ramda相当于underscore.js“紧凑”的含义是什么?

来自分类Dev

什么是处理相当于p5.js textToPoints的字体()函数的?

来自分类Dev

node.js中setInterval的基础是什么?(相当于窗口)

来自分类Dev

Erlang相当于Parsec库

来自分类Dev

Ruby的Python的defaultdict相当于什么?

来自分类Dev

相当于boost :: phoenix的是什么?

来自分类Dev

这相当于什么?SFML

来自分类Dev

什么是JavaFX相当于androids AsyncTask?

来自分类Dev

概念转换相当于什么?

来自分类Dev

Mac的`ss`相当于什么?

来自分类Dev

Maven相当于gradle'+'是什么?

来自分类Dev

CentOS的.bashrc相当于什么?

来自分类Dev

什么是 Linux 相当于 Windows 启动?

来自分类Dev

相当于在mongodb spring中喜欢

来自分类Dev

相当于JS的C ++ .charCodeAt()

来自分类Dev

Python相当于JS`Symbol`?

来自分类Dev

JS encodeURI 相当于 Java

来自分类Dev

保管库(HashiCorp)-相当于“保管库读取”的卷曲

来自分类Dev

ruby - 相当于核心库的“gem open”

来自分类Dev

纯C中的类相当于什么

来自分类Dev

相当于Java .jar文件的python是什么?

来自分类Dev

Java流中Haskell的scanl相当于什么?

来自分类Dev

Haskell中的OCaml模块相当于什么?