bladeLogger打印报错UT010029: Stream is closed

Blade 未结 2 124
fanghongliang
fanghongliang 剑圣 2025-12-04 10:02

一、该问题的重现步骤是什么?

bladeLogger.info("upload-fault-file", "文件上传成功");

打印报错java.io.IOException: UT010029: Stream is closed

请求参数有

MultipartFile参数

二、你期待的结果是什么?实际看到的又是什么?


三、你正在使用的是什么产品,什么版本?在什么操作系统上?


四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

2条回答
  • 2025-12-04 11:13

    报错信息以及相关代码和场景再提供完整一些

    0 讨论(0)
  • 2025-12-04 14:34
    ()
    (order = )
    (summary = , description = )
    R<FileUploadVO> (
        (description = , required = ) () String apiToken,
    
        (description = , required = ) () MultipartFile file,
    
        (description = ) (value = , required = ) String md5,
    
        (description = ) (value = , required = ) String aesPrivateKey) {
    
        {
    (InputStream fis = file.getInputStream();
         ByteArrayOutputStream bos = ByteArrayOutputStream()) {

    .....

    bladeLogger.info("upload-fault-file", "文件上传成功");
    R.(result, );
    
    }

    ========================以下是报错信息==============

    java.io.IOException: UT010029: Stream is closed

    at io.undertow.servlet.spec.ServletInputStreamImpl.read(ServletInputStreamImpl.java:168)

    at java.base/sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:281)

    at java.base/sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:324)

    at java.base/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:189)

    at java.base/java.io.InputStreamReader.read(InputStreamReader.java:177)

    at java.base/java.io.BufferedReader.fill(BufferedReader.java:162)

    at java.base/java.io.BufferedReader.readLine(BufferedReader.java:329)

    at java.base/java.io.BufferedReader.readLine(BufferedReader.java:396)

    at org.springblade.core.tool.utils.WebUtil.getRequestBody(WebUtil.java:286)

    at org.springblade.core.tool.utils.WebUtil.getRequestContent(WebUtil.java:310)

    at org.springblade.core.log.utils.LogAbstractUtil.addRequestInfoToLog(LogAbstractUtil.java:58)

    at org.springblade.core.log.publisher.UsualLogPublisher.publishEvent(UsualLogPublisher.java:59)

    at org.springblade.core.log.logger.BladeLogger.info(BladeLogger.java:45)

    at com.huahong.modules.pro.controller.ProFileUploadController.upload(ProFileUploadController.java:246)

    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)

    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

    at java.base/java.lang.reflect.Method.invoke(Method.java:568)

    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:355)

    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196)

    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)

    at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768)

    at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89)

    at org.springblade.core.log.aspect.RequestLogAspect.aroundApi(RequestLogAspect.java:128)

    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)

    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

    at java.base/java.lang.reflect.Method.invoke(Method.java:568)

    at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:637)

    at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:627)

    at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:71)

    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:173)

    at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768)

    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)

    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)

    at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768)

    at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:720)

    at com.huahong.modules.pro.controller.ProFileUploadController$$SpringCGLIB$$0.upload(<generated>)

    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)

    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

    at java.base/java.lang.reflect.Method.invoke(Method.java:568)

    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:255)

    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:188)

    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)

    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:926)

    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:831)

    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)

    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)

    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)

    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)

    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914)

    at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:547)

    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)

    at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614)



    ========================================================

    是吧的原因是
    在日志打印的过程中触发了底层 Servlet 输入流被再次读取,而此时输入流已经被你之前的逻辑完全读完并关闭了

    想请教下这种情况怎么用bladeLogger日志

    作者追问:2025-12-04 14:53

    0 讨论(0)
提交回复