标签:spring-rest java spring logging
我正在用弹簧靴做休息api.我需要使用输入参数(使用方法,例如GET,POST等),请求路径,查询字符串,此请求的相应类方法,以及此操作的响应,成功和错误来记录所有请求.
举个例子:
成功要求:
http://example.com/api/users/1
日志应该看起来像这样:
{
HttpStatus: 200,
path: "api/users/1",
method: "GET",
clientIp: "0.0.0.0",
accessToken: "XHGu6as5dajshdgau6i6asdjhgjhg",
method: "UsersController.getUser",
arguments: {
id: 1
},
response: {
user: {
id: 1,
username: "user123",
email: "user123@example.com"
}
},
exceptions: []
}
或者请求错误:
http://example.com/api/users/9999
日志应该是这样的:
{
HttpStatus: 404,
errorCode: 101,
path: "api/users/9999",
method: "GET",
clientIp: "0.0.0.0",
accessToken: "XHGu6as5dajshdgau6i6asdjhgjhg",
method: "UsersController.getUser",
arguments: {
id: 9999
},
returns: {
},
exceptions: [
{
exception: "UserNotFoundException",
message: "User with id 9999 not found",
exceptionId: "adhaskldjaso98d7324kjh989",
stacktrace: ...................
]
}
我希望请求/响应成为单个实体,在成功和错误情况下都包含与此实体相关的自定义信息.
在春天实现这一目标的最佳做法是什么,可能是过滤器?如果是的话,你能提供具体的例子吗?
(我已经使用了@ControllerAdvice和@ExceptionHandler,但正如我所提到的,我需要在单个位置(和单个日志)处理所有成功和错误请求).
解决方法:
不要写任何拦截器,滤波器,组件,方面等,这是一个非常常见的问题,已经解决了很多次. Spring Boot有一个名为Actuator的模块,提供开箱即用的HTTP请求日志记录.有一个端点映射到/ trace(SB1.x)或/ actuator / httptrace(SB2.0),它将显示最近100个HTTP请求.您可以自定义它以记录每个请求,或写入数据库.要获得所需的端点,您需要执行器springboot依赖项,并且还要“查找”您正在寻找的端点,并可能设置或禁用它的安全性.
此外,此应用程序将在何处运行?你会使用PaaS吗?例如,主机提供商Heroku提供请求记录作为其服务的一部分,您无需进行任何编码.
标签:spring-rest,java,spring,logging
来源: https://codeday.me/bug/20190915/1805721.html
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。