springboot中打印http请求的日志

本文介绍如何通过配置Maven依赖及application.properties文件来使用Logbook日志框架记录HTTP及HTTP客户端请求。同时展示了如何在定义httpClient bean时,通过加入拦截器实现HTTP请求日志的打印。

1. 技术选项:logbook

2. 使用方法

a. 导入logbook的maven依赖

<logbook.version>1.3.0</logbook.version>

<dependency>
            <groupId>org.zalando</groupId>
            <artifactId>logbook-core</artifactId>
            <version>${logbook.version}</version>
        </dependency>
        <dependency>
            <groupId>org.zalando</groupId>
            <artifactId>logbook-servlet</artifactId>
            <version>${logbook.version}</version>
        </dependency>
        <dependency>
            <groupId>org.zalando</groupId>
            <artifactId>logbook-httpclient</artifactId>
            <version>${logbook.version}</version>
        </dependency>
        <dependency>
            <groupId>org.zalando</groupId>
            <artifactId>logbook-spring-boot-starter</artifactId>
            <version>${logbook.version}</version>
        </dependency>

    b. 在application.properties中配置显示方式

# 自动打印HTTP/HTTPCLIENT日志
logbook.write.level=info
logbook.format.style=curl # 或http 

    c. 在定义httpClient的bean中,加入拦截

@Autowired
	private LogbookHttpRequestInterceptor logbookHttpRequestInterceptor;

	@Autowired
	private LogbookHttpResponseInterceptor logbookHttpResponseInterceptor;
@Bean
	@ConditionalOnMissingBean(HttpClient.class)
	public HttpClient httpClient() {
		RequestConfig requestConfig = RequestConfig.custom()
				.setConnectTimeout(properties.getConnectTimeOut())
				.setSocketTimeout(properties.getSocketTimeOut())
				.build();//构建requestConfig
		HttpClient client = HttpClientBuilder.create().setDefaultRequestConfig(requestConfig)
				.setUserAgent(properties.getAgent())
				.setMaxConnPerRoute(properties.getMaxConnPerRoute())
				.setMaxConnTotal(properties.getMaxConnTotal())
				//使用logbook打印HTTP请求的日志
				.addInterceptorFirst(logbookHttpRequestInterceptor)
				.addInterceptorFirst(logbookHttpResponseInterceptor)
				//使用长连接
				//.setConnectionReuseStrategy(new NoConnectionReuseStrategy())
				.build();
		return client;
	}

此时项目发送http请求,就会以curl/http的方式,显示调用的http url日志。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值