当前位置: 首页 > news >正文

精品网站建设费用 地址磐石网络wordpress depth

精品网站建设费用 地址磐石网络,wordpress depth,用dw做电子商务网站步骤,河北省建设主管部门网站文章目录如何优雅的打印项目日志原理实现日志打印Filter注入容器如何优雅的打印项目日志 框架 springboot 原理 使用filter拦截请求#xff0c;打印出请求、响应#xff0c;及耗时 知识点 1、OncePerRequestFilter Filter base class that aims to guarantee a single … 文章目录如何优雅的打印项目日志原理实现日志打印Filter注入容器如何优雅的打印项目日志 框架 springboot 原理 使用filter拦截请求打印出请求、响应及耗时 知识点 1、OncePerRequestFilter Filter base class that aims to guarantee a single execution per request dispatch, on any servlet container.Filter base class that aims to guarantee a single execution per request dispatch, on any servlet container. 过滤器基类旨在保证在任何 servlet 容器上每个请求调度一次执行。兼容多种servlet版本保证在任何 servlet 容器上每个请求调度一次执行。 2、ContentCachingRequestWrapperContentCachingResponseWrapper HttpServletRequest 包装器用于缓存从输入流和读取器读取的所有内容并允许通过字节数组检索此内容。 源代码如下第一次获取输入流时复制了一份 因为request的数据流只能读取一次通过过滤器读取一次后后面的业务处理会读不到数据 通过ContentCachingRequestWrapper将请求包装可以进行多次读取 实现 继承OncePerRequestFilter重写doFilterInternal方法 日志打印Filter import com.google.common.base.Throwables; import lombok.extern.slf4j.Slf4j; import org.springframework.http.MediaType; import org.springframework.web.filter.OncePerRequestFilter; import org.springframework.web.util.ContentCachingRequestWrapper; import org.springframework.web.util.ContentCachingResponseWrapper;import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.Enumeration;Slf4j public class LogFilter extends OncePerRequestFilter {private Integer printMaxSize;public LogFilter() {}public LogFilter(Integer printMaxSize) {if (printMaxSize null) {printMaxSize 1024;}this.printMaxSize printMaxSize;}Overrideprotected void doFilterInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, FilterChain filterChain) throws ServletException, IOException {if (isAsyncDispatch(httpServletRequest)) {filterChain.doFilter(httpServletRequest, httpServletResponse);} else {doLogFilter(getRequestWrapper(httpServletRequest), getResponseWrapper(httpServletResponse), filterChain);}}private void doLogFilter(ContentCachingRequestWrapper requestWrapper, ContentCachingResponseWrapper responseWrapper, FilterChain filterChain) throws IOException, ServletException {StringBuilder sb new StringBuilder();sb.append(System.lineSeparator()).append(Method: [).append(requestWrapper.getMethod()).append(] ).append(URI: ).append(requestWrapper.getRequestURI()).append(System.lineSeparator());long start System.currentTimeMillis();filterChain.doFilter(requestWrapper, responseWrapper);try {sb.append(getParams(requestWrapper)).append(System.lineSeparator());sb.append(getBody(requestWrapper));sb.append(getResponse(responseWrapper)).append(System.lineSeparator());} catch (Exception e) {log.warn(日志打印失败 e:{}, Throwables.getStackTraceAsString(e));} finally {responseWrapper.copyBodyToResponse();long end System.currentTimeMillis();sb.append(use time :).append(end - start).append(ms);log.info(sb.toString());}}private String getBody(ContentCachingRequestWrapper requestWrapper) {StringBuilder sb new StringBuilder();String contentType requestWrapper.getContentType();if (requestWrapper.getMethod().equalsIgnoreCase(POST) (MediaType.APPLICATION_JSON_VALUE.equals(contentType)|| MediaType.APPLICATION_JSON_UTF8_VALUE.equals(contentType))) {sb.append(body: ).append(System.lineSeparator());sb.append(new String(requestWrapper.getContentAsByteArray(), StandardCharsets.UTF_8));sb.append(System.lineSeparator());}return sb.toString();}private String getResponse(ContentCachingResponseWrapper responseWrapper) {String responseStr new String(responseWrapper.getContentAsByteArray(), StandardCharsets.UTF_8);responseStr responseStr.length() printMaxSize ? responseStr.substring(0, printMaxSize) : responseStr;return response: responseStr;}private String getParams(ContentCachingRequestWrapper requestWrapper) {EnumerationString enumeration requestWrapper.getParameterNames();StringBuilder sb new StringBuilder();sb.append(params: );while (enumeration.hasMoreElements()) {String paramName enumeration.nextElement();sb.append(paramName);sb.append( : );sb.append(requestWrapper.getParameter(paramName));sb.append(, );}if (sb.length() 2) {sb.replace(sb.length() - 2, sb.length(), );}return sb.toString();}private ContentCachingResponseWrapper getResponseWrapper(HttpServletResponse httpServletResponse) {if (httpServletResponse instanceof ContentCachingResponseWrapper) {return (ContentCachingResponseWrapper) httpServletResponse;} else {return new ContentCachingResponseWrapper(httpServletResponse);}}private ContentCachingRequestWrapper getRequestWrapper(HttpServletRequest httpServletRequest) {if (httpServletRequest instanceof ContentCachingRequestWrapper) {return (ContentCachingRequestWrapper) httpServletRequest;} else {return new ContentCachingRequestWrapper(httpServletRequest, printMaxSize);}} } 注入容器 Configuration public class FilterConfig {/*** 日志长度限制*/private Integer printMaxSize 1024;Beanpublic LogFilter getLogFilter() {return new LogFilter(printMaxSize);}}
http://www.tj-hxxt.cn/news/220966.html

相关文章:

  • 广东网站开发郑州营销网站建设公司
  • 江苏固茗建设有限公司网站注册网站应注意事项
  • 赣州网站建设效果wordpress插件安装教程
  • 南昌专业制作网站网站建设招标文件技术部分
  • 昌平石家庄网站建设国外做logo的网站
  • 智联招聘网站怎么做微招聘信息吗手机凡客网
  • asp网站打开速度慢如何自己做网站模版
  • 快递企业网站建设设计方案范例网站历史记录怎么恢复
  • 如何使用手机看建设网站四川时宇建设工程有限公司官方网站
  • 网站群集建设信誉好的唐山网站建设
  • 加强网站内容建设的意见网站开发文档范例
  • 南通企业网站制作开发平台 英文
  • 无锡h5网站建设wordpress哪种主题好
  • 幼儿网站模板wordpress 文章钩子
  • 网站支付体现功能怎么做如何将网站提交给谷歌
  • 园区 网站建设策划方案google云平台 wordpress
  • utc wordpress刷关键词排名seo
  • 网站上传不了图片不显示不出来网络工程师报名
  • 网站开发设计怎么找客户做vi设计的国外网站
  • 电商网站开发总结与感受1个服务器可以做多少个网站
  • 汕头市手机网站建设品牌筛选选功能形网站建设
  • 通用网站建设需求分析网站关键词效果追踪怎么做
  • 承德专业做网站的公司汉阳放心的建站企丿
  • 关于网站建设的标语移动端网站开发哪家好
  • 做网站需要什么资金河北省建设信息中心网站
  • 装企营销网站建设有什么网站可以免费做图
  • 网站建设平面要多少分辨率公司做网站费用会计处理
  • 东莞市国外网站建设平台北京谷歌seo公司
  • 上海电商网站开发没有网站也可以做推广吗
  • .net电商网站开发设计郑州哪家公司做网站