Grails 2.5。我需要将请求和响应记录到日志文件中。
这是记录REST / JSON api调用。我需要记录请求JSON(使用过滤器很容易)和响应JSON(看起来不可能)
api电话看起来像这样:
class myController {
def myMethod() {
def json = request.JSON
:
render(status:200, contentType:'application/json' {
['something': "something",'sometingElse' : 42]
}
尝试创建过滤器,例如:
class LoggingFilters {
def filters = {
after = { Map model ->
log.debug "${response.???"
}
问题是,你如何处理输出?试过respose.outputStream.toString()等,但它说已经有了输出流。
我看到一条说不要使用渲染的建议,返回一个带有单个项目的地图的模型:数据,并将其渲染到一些虚拟jsp之外。然后你可以在过滤器中获得模型。这个问题是我们有数百个渲染语句,我们真的不想重新测试所有内容(我们没有自动化测试)。
另一个解决方法是使用tomcat请求转储程序filter,但这不符合我们的要求(例如我们需要擦除某些输出,例如密码,希望能够登录到db,只想要记录非常具体的事情等。)
我们尝试了这个插件:https://grails.org/plugin/httplogger,但它不适用于grails 2.5。