Java Lang ToStringBuilder请求参数日志记录

Java Lang ToStringBuilder请求参数日志记录,java,log4j,request,apache-commons,Java,Log4j,Request,Apache Commons,我需要在某些情况下记录所有请求参数,以便进行调试 我尝试使用ToStringBuilder.ReflectionString(请求),但它仍然显示内存地址 有没有简单的方法以明文形式记录请求参数,以便我可以做些什么 logger.info(ToStringBuilder.reflectionString(请求)) 我还尝试了logger.info(ToStringBuilder.reflectionString(request.getParameterMap());reflectionStrin

我需要在某些情况下记录所有请求参数,以便进行调试

我尝试使用ToStringBuilder.ReflectionString(请求),但它仍然显示内存地址

有没有简单的方法以明文形式记录请求参数,以便我可以做些什么

logger.info(ToStringBuilder.reflectionString(请求))


我还尝试了logger.info(ToStringBuilder.reflectionString(request.getParameterMap());

reflectionString仅使用给定对象上的反射来查找要打印的属性。属性本身是使用其toString()方法输出的。 请求和参数映射都没有您感兴趣的请求参数作为直接属性,因此ReflectionString对您来说是失败的

我知道用JDK或commons-lang没有OOTB方法来深度反射打印对象

这个简单的名字叫什么

logger.info(request.getParameterMap());
为你生产什么

啊,我明白了:参数值是字符串数组,它只打印它们的哈希代码

您可以尝试这样的帮助函数(免责声明:未编译且未测试)

公共静态字符串getParameterToString(ServletRequest){
StringBuilder sb=新的StringBuilder(“{”);
对于(Map.Entry:request.getParameterMap().entrySet()){
sb.append(entry.getKey()).append(“:”);
sb.append(Arrays.toString(entry.getValue()).append(“,”);
}
如果(sb.length()>1)
sb.setLength(sb.length()-1);
返回sb.append(“}”).toString();
}

ReflectionString仅使用给定对象上的反射来查找要打印的属性。属性本身使用其toString()方法输出。 请求和参数映射都没有您感兴趣的请求参数作为直接属性,因此ReflectionString对您来说是失败的

我知道用JDK或commons-lang没有OOTB方法来深度反射打印对象

这个简单的名字叫什么

logger.info(request.getParameterMap());
为你生产什么

啊,我明白了:参数值是字符串数组,它只打印它们的哈希代码

您可以尝试这样的帮助函数(免责声明:未编译且未测试)

公共静态字符串getParameterToString(ServletRequest){
StringBuilder sb=新的StringBuilder(“{”);
对于(Map.Entry:request.getParameterMap().entrySet()){
sb.append(entry.getKey()).append(“:”);
sb.append(Arrays.toString(entry.getValue()).append(“,”);
}
如果(sb.length()>1)
sb.setLength(sb.length()-1);
返回sb.append(“}”).toString();
}

此功能已测试

public static String dumpParams(ServletRequest req) {
    StringBuilder sb = new StringBuilder();
    Set<Map.Entry<String, String[]>> entries = req.getParameterMap().entrySet();
    for (Map.Entry<String, String[]> entry : entries) {
        sb.append(entry.getKey())
          .append(" = ")
          .append(Arrays.toString(entry.getValue()))
          .append(", ");
    }
    if (sb.length() > 2)
        sb.setLength(sb.length() - 2);  //Removes the last comma
    return sb.toString();
}
publicstaticstringdumpparams(ServletRequest-req){
StringBuilder sb=新的StringBuilder();
Set entries=req.getParameterMap().entrySet();
对于(Map.Entry:entries){
sb.append(entry.getKey())
.append(“=”)
.append(Arrays.toString(entry.getValue()))
.附加(“,”);
}
如果(sb.length()>2)
sb.setLength(sb.length()-2);//删除最后一个逗号
使某人返回字符串();
}

此功能已测试

public static String dumpParams(ServletRequest req) {
    StringBuilder sb = new StringBuilder();
    Set<Map.Entry<String, String[]>> entries = req.getParameterMap().entrySet();
    for (Map.Entry<String, String[]> entry : entries) {
        sb.append(entry.getKey())
          .append(" = ")
          .append(Arrays.toString(entry.getValue()))
          .append(", ");
    }
    if (sb.length() > 2)
        sb.setLength(sb.length() - 2);  //Removes the last comma
    return sb.toString();
}
publicstaticstringdumpparams(ServletRequest-req){
StringBuilder sb=新的StringBuilder();
Set entries=req.getParameterMap().entrySet();
对于(Map.Entry:entries){
sb.append(entry.getKey())
.append(“=”)
.append(Arrays.toString(entry.getValue()))
.附加(“,”);
}
如果(sb.length()>2)
sb.setLength(sb.length()-2);//删除最后一个逗号
使某人返回字符串();
}