在工作中因为是做银行的项目调用都是用的WEB SERVICE 方式来调用的,经常会出现错误只能查询日志,看到的日志格式非常的不方便所以自己整理写了一个解析工具。
主要是通过正则试来进行解析:
/**
*@author: yuyanshan
*@date : 2022-8-7
* 说明 :将日常打印的日志转换成可以阅读的JSON对象。
**/
public class ObjectAndStringUtils {
/**
* 数字类型匹配(包括整形和浮点型) & 日期类型匹配 & 对象类型匹配 & ...
*/
public static Pattern datePattern = Pattern.compile("^[a-zA-Z]{3} [a-zA-Z]{3} [0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2} CST ((19|20)\\d{2})$");
public static Pattern numPattern = Pattern.compile("^-?[0-9]+\\.?[0-9]*$");
public static Pattern objectPattern = Pattern.compile("^[a-zA-Z0-9\\.]+\\(.+\\)$");
public static Pattern listPattern = Pattern.compile("^\\[.*\\]$");
public static Pattern mapPattern = Pattern.compile("^\\{.*\\}$");
public static Pattern supperPattern = Pattern.compile("^super=[a-zA-Z0-9\\.]+\\(.+\\)$");
public static final String NULL = "null";
/**
* toString -> object
*/
public static Object objectStrToObject(String toString) throws ParseException {
return buildTypeValue(toString);
}
测试类:
package com.yuys;
import com.alibaba.fastjson.JSON;
import com.google.common.collect.Maps;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class ToStringUtilsTest {
public static void main(String[] args) throws ParseException {
Map<String,Object> stringObjectMap = Maps.newHashMap();
List<Object> stringList = new ArrayList<>();
stringList.add("aa,aaa,aaaaa,aa,aaaa");
stringList.add("bbbbbbbbbbbbbbbb");
stringList.add("cccccccccccccccc");
Map<String,Object> twoMap = Maps.newHashMap();
twoMap.put("twoMap-a","twoaaaaaaaaaaaaaaaaa" );
stringList.add(twoMap);
stringObjectMap.put("1","11111111111111111");
stringObjectMap.put("2","22222222222222222");
stringObjectMap.put("list",stringList);
System.out.println("map:"+stringObjectMap);
System.out.println("mapJson:"+ JSON.toJSONString(stringObjectMap));
Object a = ObjectAndStringUtils.objectStrToObject(stringObjectMap.toString());
System.out.println("a:"+a);
}
}
结果
D:\DEVELOP\java_jdk\jdk1.8.0_331\bin\java.exe
map:{1=11111111111111111, 2=22222222222222222, list=[aa,aaa,aaaaa,aa,aaaa, bbbbbbbbbbbbbbbb, cccccccccccccccc, {twoMap-a=twoaaaaaaaaaaaaaaaaa}]}
mapJson:{"1":"11111111111111111","2":"22222222222222222","list":["aa,aaa,aaaaa,aa,aaaa","bbbbbbbbbbbbbbbb","cccccccccccccccc",{"twoMap-a":"twoaaaaaaaaaaaaaaaaa"}]}
a:{1=11111111111111111, 2=22222222222222222, list=[aa,aaa,aaaaa,aa,aaaa, bbbbbbbbbbbbbbbb, cccccccccccccccc, {twoMap-a=twoaaaaaaaaaaaaaaaaa}]}
Disconnected from the target VM, address: '127.0.0.1:49259', transport: 'socket'
Process finished with exit code 0
工具类源码下载:
日常控制台输出日志解析处理转换为JSON-Java文档类资源-CSDN下载
如果你觉得这个工具不能实现你的要求,那你就把你的需要转换的日志写在下面的评论中,我会把处理结果贴出来的。