Java正则表达式解析复杂跨行日志

news2024/11/23 13:21:39

Java正则表达式解析复杂跨行日志

    • 解析内容
    • 正则
    • 使用
    • 完整代码

使用正则表达式解析日志

解析内容

String content= "2023-09-23 11:31:54.705  INFO [           main] com.zlm.tools.ToolsApplication           : Starting ToolsApplication using Java 1.8.0_201 on \n" +
                "thinkbook16 with PID 2904 (D:\\study\\tools\\target\\classes started by zlm in D:\\study\\tools)\n" +
                "2023-09-23 11:31:54.706  INFO [           main] com.zlm.tools.ToolsApplication           : No active profile set, falling back to 1 default profile: \"default\"\n" +
                "2023-09-23 11:31:55.190  INFO [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)\n" +
                "2023-09-23 11:31:55.194  INFO [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]\n" +
                "2023-09-23 11:31:55.195  INFO [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.78]\n" +
                "2023-09-23 11:31:55.261  INFO [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext\n" +
                "2023-09-23 11:31:55.261  INFO [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 532 ms\n" +
                "2023-09-23 11:31:55.448  INFO [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''\n" +
                "2023-09-23 11:31:55.453  INFO [           main] com.zlm.tools.ToolsApplication           : Started ToolsApplication in 0.943 seconds (JVM running for 1.73)";

正则

//匹配 []内容包含[]
String regex = "\\[(.+)\\]"
//匹配任意字符非贪婪模式
regex = "(.+?)"
//匹配:开始 非[开始的内容 
regex = ":([^\\[]*\\n)+"
//匹配日期
regex = "(\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}\\.\\d{3})";
//匹配日志级别
regex = "([INFO, WARN, ERROR, FATAL, TRACE, DEBUG, INFO]+)";
String regex = "(\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}\\.\\d{3})  ([INFO, WARN, ERROR, FATAL, TRACE, DEBUG, INFO]+) \\[(.+)\\] (.+?) :([^\\[]*\\n)+";
        

使用

Pattern compile = Pattern.compile(regex);
        Matcher matcher = compile.matcher(content);
        while (matcher.find()){
            System.out.println("执行时间: "+matcher.group(1));
            System.out.println("日志级别: "+matcher.group(2));
            System.out.println("执行方法: "+matcher.group(3).trim());
            System.out.println("执行类: "+matcher.group(4));
            System.out.println("日志内容: "+matcher.group(5));
        }

完整代码

public void test(){
        String content= "2023-09-23 11:31:54.705  INFO [           main] com.zlm.tools.ToolsApplication           : Starting ToolsApplication using Java 1.8.0_201 on \n" +
                "thinkbook16 with PID 2904 (D:\\study\\tools\\target\\classes started by zlm in D:\\study\\tools)\n" +
                "2023-09-23 11:31:54.706  INFO [           main] com.zlm.tools.ToolsApplication           : No active profile set, falling back to 1 default profile: \"default\"\n" +
                "2023-09-23 11:31:55.190  INFO [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)\n" +
                "2023-09-23 11:31:55.194  INFO [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]\n" +
                "2023-09-23 11:31:55.195  INFO [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.78]\n" +
                "2023-09-23 11:31:55.261  INFO [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext\n" +
                "2023-09-23 11:31:55.261  INFO [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 532 ms\n" +
                "2023-09-23 11:31:55.448  INFO [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''\n" +
                "2023-09-23 11:31:55.453  INFO [           main] com.zlm.tools.ToolsApplication           : Started ToolsApplication in 0.943 seconds (JVM running for 1.73)";
        String regex = "(\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}\\.\\d{3})  ([INFO, WARN, ERROR, FATAL, TRACE, DEBUG, INFO]+) \\[(.+)\\] (.+?) :([^\\[]*\\n)+";
        Pattern compile = Pattern.compile(regex);
        Matcher matcher = compile.matcher(content);
        while (matcher.find()){
            System.out.println("执行时间: "+matcher.group(1));
            System.out.println("日志级别: "+matcher.group(2));
            System.out.println("执行方法: "+matcher.group(3).trim());
            System.out.println("执行类: "+matcher.group(4));
            System.out.println("日志内容: "+matcher.group(5));
        }

    }

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1036443.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SVG 基本语法

1. 概述 svg为可缩放矢量图形&#xff0c;使用 XML 格式定义图像。 2. 基础图形 2.1 矩形 &#xff08;1&#xff09; 基础语法 <rect x"20" y"20" rx"20" ry"20" width"150" height"100" fill"red&qu…

10.4Cookie和Session

一.概念: 二.相关方法: SendCookie: import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servle…

HDLBits-Edgedetect

刚开始写的代码如下&#xff1a; module top_module (input clk,input [7:0] in,output [7:0] pedge );reg [7:0] in_pre;always (posedge clk)begin in_pre < in;endassign pedge in & ~in_pre; endmodule但是提交结果是错误的。猜想原因如下&#xff1a; assign p…

关于地址存放的例题

unsigned int a 0x1234; unsigned char b *(unsigned char*)&a; 上面代码大端存储和小端存储的值分别是多少&#xff1f; 大端存储的是把高位地址存放在低位地址处&#xff0c;低位存放到高位。小端是高位存放在高位&#xff0c;低位在低位。因为a是整型&#xff0c;所…

Python 逢七拍手小游戏

"""逢七拍手游戏介绍&#xff1a;逢七拍手游戏的规则是&#xff1a;从1开始顺序数数&#xff0c;数到有7&#xff0c;或者是7的倍数时&#xff0c;就拍一手。例如&#xff1a;7、14、17......70......知识点&#xff1a;1、循环语句for2、嵌套条件语句if/elif/e…

java框架-Springboot3-基础特性+核心原理

文章目录 java框架-Springboot3-基础特性核心原理profiles外部化配置生命周期监听事件触发时机事件驱动开发SPISpringboot容器启动过程自定义starter java框架-Springboot3-基础特性核心原理 profiles 外部化配置 生命周期监听 事件触发时机 事件驱动开发 Component public c…

竞赛 基于深度学习的目标检测算法

文章目录 1 简介2 目标检测概念3 目标分类、定位、检测示例4 传统目标检测5 两类目标检测算法5.1 相关研究5.1.1 选择性搜索5.1.2 OverFeat 5.2 基于区域提名的方法5.2.1 R-CNN5.2.2 SPP-net5.2.3 Fast R-CNN 5.3 端到端的方法YOLOSSD 6 人体检测结果7 最后 1 简介 &#x1f5…

mybatis日志体系

title: “java日志体系” createTime: 2021-12-08T12:19:5708:00 updateTime: 2021-12-08T12:19:5708:00 draft: false author: “ggball” tags: [“mybatis”] categories: [“java”] description: “java日志体系” java日志体系 常用日志框架 Log4j&#xff1a;Apache …

华为云云耀云服务器L实例评测|搭建您的私人影院网站

前言 本文为华为云云耀云服务器L实例测评文章&#xff0c;测评内容是云耀云服务器L实例搭建在线视频网站&#xff0c;大家可以将这个网站作为私人影院或是分享给朋友&#xff0c;但是尽量不要更广的传播&#xff0c;因为这涉及到版权问题 系统配置&#xff1a;华为云 2核2G 3M…

PostgreSQL 16 发布,更可靠更稳健

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

【LeetCode-简单题】513. 找树左下角的值

文章目录 题目方法一&#xff1a;DFS递归 前序遍历方法二&#xff1a;BFS层序双队列 题目 方法一&#xff1a;DFS递归 前序遍历 递归三部曲 确定递归函数参数和返回值确定递归结束条件编写常规递归体 本题只会在叶子结点才会去统计结果 也就是 root.leftnull&&root.r…

Flink DataStream API

DataStream API是Flink的核心层API。一个Flink程序&#xff0c;其实就是对DataStream的各种转换。具体来说&#xff0c;代码基本上都由以下几部分构成&#xff1a; package com.atguigu.env;import org.apache.flink.api.common.JobExecutionResult; import org.apache.flink.a…

AIGC百模大战

AIGC Artificial Intelligence Generated Content&#xff0c; 或者Generative Artificial Intelligence&#xff0c;它能够生成新的数据、图像、语音、视频、音乐等内容&#xff0c;从而扩展人工智能系统的应用范围。 生成式人工智能有可能给全球经济带来彻底的变化。根据高盛…

在树莓派上实现numpy的conv2d卷积神经网络做图像分类,加载pytorch的模型参数,推理mnist手写数字识别,并使用多进程加速

这几天又在玩树莓派,先是搞了个物联网,又在尝试在树莓派上搞一些简单的神经网络,这次搞得是卷积识别mnist手写数字识别 训练代码在电脑上,cpu就能训练,很快的: import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, tra…

spring-cloud-stream版本升级,告别旧注解@EnableBinding,拥抱函数式编程

spring-cloud-stream中&#xff0c;EnableBinding从3.1开始就被弃用&#xff0c;取而代之的是函数式编程模型 同期被废弃的注解还有下面这些注解 Input Output EnableBinding StreamListener 官方例子&#xff1a;GitHub - spring-cloud/spring-cloud-stream-samples: Sample…

电视访问群晖共享文件失败的设置方式,降低协议版本

控制面板-文件服务-SMB-高级设置&#xff0c;常规及其他里面配置即可。

微信公众号小说系统源码 漫画系统源码 可对接微信公众号 APP打包 对接个人微信收款

源码描述&#xff1a;修复版掌上阅读小说源码_公众号漫画源码可以打包漫画app ■产品介绍 掌上阅读小说源码支持公众号、代理分站支付功能完善强大的小说源码&#xff0c;公众号乙帅读者&#xff0c; 可以对接微信公众号、APP打包。支持对接个人微信收款。 ■产品优势 1新增…

免费好用的Mac电脑磁盘清理工具CleanMyMac

许多刚从Windows系统转向Mac系统怀抱的用户&#xff0c;一开始难免不习惯&#xff0c;因为Mac系统没有像Windows一样的C盘、D盘&#xff0c;分盘分区明显。因此这也带来了一些问题&#xff0c;关于Mac的磁盘的清理问题&#xff0c;怎么进行清理&#xff1f;怎么确保清理的干净&…

3+氧化应激+分型+预后模型

今天给同学们分享一篇3氧化应激分型预后模型的生信文章“An oxidative stress-related signature for predicting the prognosis of liver cancer”&#xff0c;这篇文章于2023年月4日发表在Front Genet 期刊上&#xff0c;影响因子为3.7。 越来越多的证据表明&#xff0c;肿瘤…

【MySQL数据库事务操作、主从复制及Redis数据库读写分离、主从同步的实现机制】

文章目录 MySQL数据库事务操作、主从复制及Redis数据库读写分离、主从同步的实现机制ACID及如何实现事务隔离级别&#xff1a;MVCC 多版本并发控制MySQL数据库主从复制主从同步延迟怎么处理Redis 读写分离1.什么是主从复制2.读写分离的优点 Redis为什么快呢&#xff1f; MySQL数…