日志打印
Forest在发送请求时和接受响应数据时都会自动打印出HTTP请求相关的日志,其中包括:请求日志、响应状态日志、响应内容日志。
请求日志
请求日志会打印出所有请求发送的内容,其中包括请求行、请求头、请求体三部分
这段内容就是请求日志,包含的发送HTTP请求的所有几乎所有信息,也很容易看懂。如若看不懂,还请参见《HTTP请求报文》,这里不再赘述。
响应状态日志
响应状态日志包含了HTTP请求响应后接受到的状态码,以及响应时间
Status为状态码:标准的HTTP协议定义的请求响应状态码,如若不清楚,可以参见《HTTP状态码》
Time为请求响应时间:从客户端请求发送到接受到响应数据的总时间
响应内容日志
响应内容日志则会打印出请求发送的目标服务器响应后,返回给请求接受方的实际数据内容
Content=
后面的内容便是请求响应接受到的数据
友情提示
响应内容日志默认是关闭的
日志总开关
很多时候,我们只在调试的时候打印日志,上了生产环境后为了节省性能便不打印了(并不是所有公司都不在生产打印日志,毕竟万一出了问题也是要有据可循的,这里只是举个栗子( •⌄• )), 便需要通过配置的方式打开和关闭HTTP请求的日志。
单个请求的日志开关
日志的总开关控制粒度太过粗放,如果想要只关闭和打开某一个请求的日志有办法吗?有的~
Forest自1.50-BETA1
版本后提供了@LogEnabled
注解来专门干这个事。
@LogEnabled
注解的各属性如下所示:
属性 | 作用 | 默认值 |
---|---|---|
value | 是否打印请求/响应日志 | true |
logRequest | 是否打印请求日志 | true |
logResponseStatus | 是否打印响应状态日志 | true |
logResponseContent | 是否打印响应内容日志 | false |
具体如何使用看下面例子:
自定义日志处理器
如果有小伙伴觉得Forest默认的日志打印格式太丑,领导都看不下去了怎么办?
好消息是自1.5.0-BETA1
版本后可以通过自定义扩展日志处理器来按自己喜欢的格式打印日志。
实现过程也不复杂:现实com.dtflys.forest.logging.ForestLogHandler
接口,或者继承com.dtflys.forest.logging.DefaultLogHandler
类。
这里的例子使用继承DefaultLogHandler
类的方式,因为可以少些很多代码
配置全局日志处理器
定义完自己的日志处理器后并不会马上就生效,还需要在配置中指定您定义的日志处理器类。
日志处理器的配置也分两种:全局级别
和接口/方法级别
。
我们先看全局日志处理器怎么配置:
配置单个请求的日志处理器
和日志的开关一样,我只想对某个或某几个请求用自定义的日志处理器,也一样有办法。
Forest提供了@LogHandler注解
来解决这个问题