Java Lang ToStringBuilder请求参数日志记录
我需要在某些情况下记录所有请求参数,以便进行调试 我尝试使用ToStringBuilder.ReflectionString(请求),但它仍然显示内存地址 有没有简单的方法以明文形式记录请求参数,以便我可以做些什么 logger.info(ToStringBuilder.reflectionString(请求))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
我还尝试了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);//删除最后一个逗号
使某人返回字符串();
}