日常控制台输出日志解析处理转换为JSON

在工作中因为是做银行的项目调用都是用的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下载

如果你觉得这个工具不能实现你的要求,那你就把你的需要转换的日志写在下面的评论中,我会把处理结果贴出来的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您可以使用Fastjson自带的SerializerFeature.PrettyFormat来实现格式化输出。示例代码如下: ``` java import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; public class Test { public static void main(String[] args) { String jsonString = "{\"name\":\"Tom\",\"age\":20,\"gender\":\"male\"}"; // 格式化输出 String prettyJsonString = JSON.toJSONString(JSON.parseObject(jsonString), SerializerFeature.PrettyFormat); System.out.println(prettyJsonString); } } ``` 输出结果: ``` { "age": 20, "gender": "male", "name": "Tom" } ``` ### 回答2: Fastjson是一种用于处理JSON数据的Java库。它提供了多种功能,其中之一是将JSON格式化输出打印。下面是使用Fastjson格式化输出打印的示例: ```java import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; public class FastjsonExample { public static void main(String[] args) { // 创建一个JSON对象 JSONObject jsonObject = new JSONObject(); jsonObject.put("name", "John"); jsonObject.put("age", 25); jsonObject.put("gender", "male"); // 使用Fastjson进行格式化输出打印 String formattedOutput = JSON.toJSONString(jsonObject, true); System.out.println(formattedOutput); } } ``` 上述代码中,首先创建了一个JSON对象`jsonObject`,其中包含了`name`、`age`和`gender`三个属性。然后使用`JSON.toJSONString()`方法将`jsonObject`格式化为字符串形式,并传入第二个参数`true`表示进行格式化。最后通过`System.out.println()`方法输出格式化后的字符串。 运行上述代码,将得到以下输出结果: ``` { "age": 25, "gender": "male", "name": "John" } ``` 可以看到,JSON对象被格式化输出,并使用了缩进和换行符,以使其更易读。 需要注意的是,Fastjson还提供了很多其他功能,如将Java对象转换JSON字符串、将JSON字符串解析Java对象等。以上仅是有关Fastjson格式化输出打印的简单示例。 ### 回答3: fastjson2是一个高效的Java JSON处理库,用于解析和生成JSON数据。它可以将Java对象转换JSON字符串,也可以将JSON字符串转换Java对象。在使用fastjson2库时,我们可以使用格式化输出来打印JSON数据。 格式化输出功能可以使得JSON数据更加易读和美观。通过设置相应的格式化参数,我们可以将JSON数据按照一定的缩进和换行规则进行输出。这样,在开发和调试过程中,我们可以更清晰地查看JSON数据的结构和内容。 我们可以通过以下步骤来实现fastjson2的格式化输出打印: 1. 导入fastjson2库的相关依赖。可以在项目的pom.xml文件中添加fastjson2的依赖项,或者手动将fastjson2的jar包添加到项目的类路径中。 2. 创建一个Java对象,并将其转换JSON字符串。可以使用fastjson2提供的JSONObject或者JSONArray类来创建JSON对象或者数组。 3. 使用JSON.toJSONString方法将Java对象转换为格式化后的JSON字符串。在该方法中,我们可以通过设置SerializerFeature.PrettyFormat参数来开启格式化输出功能。 4. 打印格式化后的JSON字符串。可以使用System.out.println或者其他打印方法将格式化后的JSON字符串输出控制台或者日志文件中。 以下是一个示例代码片段,展示了如何使用fastjson2进行格式化输出打印: ``` import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; public class FastJsonDemo { public static void main(String[] args) { // 创建一个JSON对象 JSONObject jsonObject = new JSONObject(); jsonObject.put("name", "张三"); jsonObject.put("age", 20); // 将JSON对象转换为格式化后的JSON字符串 String jsonString = JSON.toJSONString(jsonObject, SerializerFeature.PrettyFormat); // 打印格式化后的JSON字符串 System.out.println(jsonString); } } ``` 运行上述代码,输出JSON字符串会按照一定的缩进和换行规则进行格式化,以便于阅读和理解。 总之,通过使用fastjson2库的格式化输出功能,可以使得JSON数据更加易读和美观,方便开发和调试工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值