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

淄博网站建设app开发做购买网站

淄博网站建设app开发,做购买网站,办公室现代简约装修,创新的医疗网站建设SpringBoot使用log4j2 在Spring Boot中所有的starter 都是基于spring-boot-starter-logging的#xff0c;默认使用Logback。使用Log4j2的话#xff0c;你需要排除 spring-boot-starter-logging 的依赖#xff0c;并添加 spring-boot-starter-log4j2的依赖。 配置依赖 …SpringBoot使用log4j2 在Spring Boot中所有的starter 都是基于spring-boot-starter-logging的默认使用Logback。使用Log4j2的话你需要排除 spring-boot-starter-logging 的依赖并添加 spring-boot-starter-log4j2的依赖。 配置依赖 !-- 自定义验证注解 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-validation/artifactIdexclusionsexclusiongroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-logging/artifactId/exclusion/exclusions/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-log4j2/artifactId/dependencyOpenFeign日志配置 feign的配置类 public class BaseFeignConfig {BeanLogger.Level feignLoggerLevel() {return Logger.Level.FULL;} }单个服务应用配置类 FeignClient(value crm-base,configuration BaseFeignConfig.class ) public interface BaseFeign {GetMapping(/getAppInfo)ResponseExObject getAppInfo(RequestParam(name appId) Integer appId); }日志级别配置 logging.level.com.charles.feign.BaseFeigndebug打印效果 23-04-18 15:01:04 DEBUG http-nio-8080-exec-1 crm-emergency traceId- userId- com.linjiu.feign.BaseFeign.log:72:[BaseFeign#getAppInfo] --- GET http://crm-base/getAppInfo?appId-1 HTTP/1.1 2023-04-18 15:01:04 DEBUG http-nio-8080-exec-1 crm-emergency traceId- userId- com.linjiu.feign.BaseFeign.log:72:[BaseFeign#getAppInfo] --- END HTTP (0-byte body) 2023-04-18 15:02:37 DEBUG http-nio-8080-exec-3 crm-emergency traceId- userId- com.linjiu.feign.BaseFeign.log:72:[BaseFeign#getAppInfo] --- END HTTP (0-byte body) 2023-04-18 15:02:38 DEBUG http-nio-8080-exec-3 crm-emergency traceId- userId- com.linjiu.feign.BaseFeign.log:72:[BaseFeign#getAppInfo] --- HTTP/1.1 200 (205ms) 2023-04-18 15:02:38 DEBUG http-nio-8080-exec-3 crm-emergency traceId- userId- com.linjiu.feign.BaseFeign.log:72:[BaseFeign#getAppInfo] connection: keep-alive 2023-04-18 15:02:38 DEBUG http-nio-8080-exec-3 crm-emergency traceId- userId- com.linjiu.feign.BaseFeign.log:72:[BaseFeign#getAppInfo] content-type: application/json 2023-04-18 15:02:38 DEBUG http-nio-8080-exec-3 crm-emergency traceId- userId- com.linjiu.feign.BaseFeign.log:72:[BaseFeign#getAppInfo] date: Tue, 18 Apr 2023 07:02:38 GMT 2023-04-18 15:02:38 DEBUG http-nio-8080-exec-3 crm-emergency traceId- userId- com.linjiu.feign.BaseFeign.log:72:[BaseFeign#getAppInfo] keep-alive: timeout60 2023-04-18 15:02:38 DEBUG http-nio-8080-exec-3 crm-emergency traceId- userId- com.linjiu.feign.BaseFeign.log:72:[BaseFeign#getAppInfo] transfer-encoding: chunked 2023-04-18 15:02:38 DEBUG http-nio-8080-exec-3 crm-emergency traceId- userId- com.linjiu.feign.BaseFeign.log:72:[BaseFeign#getAppInfo] 2023-04-18 15:02:38 DEBUG http-nio-8080-exec-3 crm-emergency traceId- userId- com.linjiu.feign.BaseFeign.log:72:[BaseFeign#getAppInfo] {data:[{ ...源码解析 SynchronousMethodHandler#executeAndDecode发送请求。如果日志级别不是Logger.Level.NONE打印日志。 Object executeAndDecode(RequestTemplate template, Options options) throws Throwable {Request request targetRequest(template);if (logLevel ! Logger.Level.NONE) {logger.logRequest(metadata.configKey(), logLevel, request);}Response response;long start System.nanoTime();try {response client.execute(request, options);// ensure the request is set. TODO: remove in Feign 12response response.toBuilder().request(request).requestTemplate(template).build();} catch (IOException e) {if (logLevel ! Logger.Level.NONE) {logger.logIOException(metadata.configKey(), logLevel, e, elapsedTime(start));}throw errorExecuting(request, e);}long elapsedTime TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - start);if (decoder ! null)return decoder.decode(response, metadata.returnType());CompletableFutureObject resultFuture new CompletableFuture();asyncResponseHandler.handleResponse(resultFuture, metadata.configKey(), response,metadata.returnType(),elapsedTime);try {if (!resultFuture.isDone())throw new IllegalStateException(Response handling not done);return resultFuture.join();} catch (CompletionException e) {Throwable cause e.getCause();if (cause ! null)throw cause;throw e;}} Slf4jLogger#logRequest判断是否允许debug日志输出 protected void logRequest(String configKey, Level logLevel, Request request) {if (this.logger.isDebugEnabled()) {super.logRequest(configKey, logLevel, request);}}Logger#logRequest打印具体的请求日志。 protected void logRequest(String configKey, Level logLevel, Request request) {log(configKey, --- %s %s HTTP/1.1, request.httpMethod().name(), request.url());if (logLevel.ordinal() Level.HEADERS.ordinal()) {for (String field : request.headers().keySet()) {for (String value : valuesOrEmpty(request.headers(), field)) {log(configKey, %s: %s, field, value);}}int bodyLength 0;if (request.body() ! null) {bodyLength request.length();if (logLevel.ordinal() Level.FULL.ordinal()) {String bodyText request.charset() ! null? new String(request.body(), request.charset()): null;log(configKey, ); // CRLFlog(configKey, %s, bodyText ! null ? bodyText : Binary data);}}log(configKey, --- END HTTP (%s-byte body), bodyLength);}}AsyncResponseHandler#handleResponse处理响应。打印日志用的是logger.logAndRebufferResponse void handleResponse(CompletableFutureObject resultFuture,String configKey,Response response,Type returnType,long elapsedTime) {// copied fairly liberally from SynchronousMethodHandlerboolean shouldClose true;try {if (logLevel ! Level.NONE) {response logger.logAndRebufferResponse(configKey, logLevel, response,elapsedTime);}} catch (final Exception e) {resultFuture.completeExceptionally(e);}} Logger实体类创建FeignClientFactoryBean#feign创建Feign。 protected Builder feign(FeignContext context) {FeignLoggerFactory loggerFactory (FeignLoggerFactory)this.get(context, FeignLoggerFactory.class);Logger logger loggerFactory.create(this.type);Builder builder ((Builder)this.get(context, Builder.class)).logger(logger).encoder((Encoder)this.get(context, Encoder.class)).decoder((Decoder)this.get(context, Decoder.class)).contract((Contract)this.get(context, Contract.class));this.configureFeign(context, builder);return builder;}DefaultFeignLoggerFactory#create创建日志类。 public Logger create(Class? type) {return (Logger)(this.logger ! null ? this.logger : new Slf4jLogger(type));}使用slf4j进行创建类型是com.linjiu.feign.BaseFeign。这也解释了需要配置logging.level.com.charles.feign.BaseFeigndebug才能输出日志。有时间专门来一篇博客看看slf4j日志的生效逻辑和Springboot日志生效的逻辑。 public Slf4jLogger(Class? clazz) {this(LoggerFactory.getLogger(clazz));}
http://www.hkea.cn/news/14338790/

相关文章:

  • 凡科建站怎么样全网营销推广软件
  • 安岳建设局网站安卓游戏模板下载网站
  • 农畜产品销售平台的网站建设做 网站 技术支持 抓获 互助
  • 医药网站备案开发小程序定制公司
  • 建设网站公司有哪些wordpress喜欢 赏 分享
  • 教做家常菜的网站长沙抖音seo公司地址
  • 长沙会议网站设计哪家专业无锡建设局施工许可证网站
  • 网站开发时自适应物流网站平台建设
  • 网站域名注册后怎么建设黄页88网宁波企业名录
  • 网站建设的数据储存在哪里互联网营销师招聘
  • 网站建设ppt演示文稿网站地图的作用
  • 重庆网站建设公司模板php做网站的技术难点
  • 济源做网站有哪些小程序免费模板平台
  • 商城网站建设目标做传媒网站公司名称
  • 福州网站建设liednsflash网站源码带asp后台
  • 免费做app和网站的平台有哪些百度一下你就知道官方网站
  • 一个网站要注意哪些问题没有网站备案
  • 吉林市市政建设集团网站佛山建站怎么做
  • 一流的盐城网站建设东莞莞城网站建设公司
  • 织梦网站字体大小wordpress去掉index
  • 岳麓区做网站企业融资什么意思
  • 有网站建设费科目吗自己切片视频做网站
  • 青海省住房建设厅网站申请域名备案
  • VPS如何做网站服务器网页制作作业代码
  • 芜湖营销网站建设深圳网站制作建设公司
  • 网站后台可以备份吗东莞网站如何制作
  • 电商设计师网站黑帽seo技术有哪些
  • wordpress网站载入慢美食网页设计论文
  • 网站开发的主要工作学校网页制作模板
  • 企业网站建设专业的网站建设服务合同 印花税