Java 用于解析日志的正则表达式

Java 用于解析日志的正则表达式,java,regex,regex-lookarounds,regex-greedy,Java,Regex,Regex Lookarounds,Regex Greedy,你好,黑客们,我想知道是否有人可以帮助我匹配所有类型的日志和模式。关于如何匹配{}中的完整对象,有什么建议吗 样品 [1517725731.300][DEBUG]:DEVTOOLS EVENT Runtime.consoleAPICalled{ args:[{ 类名:数组, 描述:Array2, objectId:{\injectedScriptId \:13\id \:11}, 预览:{ 描述:Array2, 溢出:错误, 物业:[{ 姓名:0, 类型:字符串, 价值:跟踪发射 }, { 姓名

你好,黑客们,我想知道是否有人可以帮助我匹配所有类型的日志和模式。关于如何匹配{}中的完整对象,有什么建议吗

样品

[1517725731.300][DEBUG]:DEVTOOLS EVENT Runtime.consoleAPICalled{ args:[{ 类名:数组, 描述:Array2, objectId:{\injectedScriptId \:13\id \:11}, 预览:{ 描述:Array2, 溢出:错误, 物业:[{ 姓名:0, 类型:字符串, 价值:跟踪发射 }, { 姓名:1,, 子类型:数组, 类型:对象, 值:argument4 } ], 子类型:数组, 类型:对象 }, 子类型:数组, 类型:对象 } ], executionContextId:13, 堆栈跟踪:{ 调用框:[{ 栏目号:39, functionName:window.debug.that.anonymous函数, 行号:184, 脚本ID:234, 网址:https://secure.somerandomsite.com/js/common/ba-debug.js }, { 栏目号:475, 功能名称:loggerTrackingHandler, 行号:0, 脚本ID:60, 网址:https://secure.somerandomsite.com/jsmin/gzip_1642294/bundles/mainTracking.min.js }, { 栏目号:436, 函数名称:CsApplicationTrackingControllerBase.commontTrackEvent, 行号:4, 脚本ID:60, 网址:https://secure.somerandomsite.com/jsmin/gzip_1642294/bundles/mainTracking.min.js }, { 栏目号:5, 函数名称:CsApplicationTrackingControllerBase.parentTrackEvent, 行号:8,, 脚本ID:60, 网址:https://secure.somerandomsite.com/jsmin/gzip_1642294/bundles/mainTracking.min.js }, { 栏目号:525, functionName:CsApplicationTrackingController.trackEvent, 行号:16, 脚本ID:60, 网址:https://secure.somerandomsite.com/jsmin/gzip_1642294/bundles/mainTracking.min.js }, { 栏目号:2124, 函数名称:CsApplicationTrackingController.trackChangeTab, 行号:19, 脚本ID:60, 网址:https://secure.somerandomsite.com/jsmin/gzip_1642294/bundles/mainTracking.min.js }, { 栏目号:22, 函数名称:MyCreditAnalysisViewModel.self.selectTab, 行号:6, 脚本ID:263, 网址:https://secure.somerandomsite.com/jsmin/gzip_N1393604112/bundles/newOverview.min.js }, { 栏目号:48, 函数名:, 行号:53, 脚本ID:281, 网址:https://secure.somerandomsite.com/js/common/knockout/knockout-2.1.0.js }, { 栏目号:4815, 功能名称:调度, 行号:2, 脚本ID:228, 网址:https://secure.somerandomsite.com/3rd_party/jquery-1.7.2.min.js }, { 栏目号:708, 函数名:i, 行号:2, 脚本ID:228, 网址:https://secure.somerandomsite.com/3rd_party/jquery-1.7.2.min.js } ] }, 时间戳:1517725731298.069, 类型:原木 } [1517725731.305][DEBUG]:DEVTOOLS响应输入。DispatchMouseeEvent id=260{ } [1517725731.305][INFO]:正在等待挂起的导航。。。 [1517725731.305][DEBUG]:DEVTOOLS命令Runtime.evaluate id=261{ 表达方式:1 }
任何以[1517725731.305][INFO]:开头的行都是新的日志条目。找那些

public static void processLogFile(Path logFile) throws IOException {
    Pattern logstart = Pattern.compile("^\\[\\d+\\.\\d+\\]\\[\\w+\\]: ");
    try (BufferedReader log = Files.newBufferedReader(logFile)) {
        StringBuilder logEntry = new StringBuilder();
        for (String line; (line = log.readLine()) != null; ) {
            if (logstart.matcher(line).find()) {
                if (logEntry.length() != 0)
                    processLogEntry(logEntry.toString());
                logEntry.setLength(0); // clear buffer
            }
            logEntry.append(line).append(System.lineSeparator());
        }
        if (logEntry.length() != 0)
            processLogEntry(logEntry.toString());
    }
}
private static void processLogEntry(String logEntry) {
    // code here
}

你到底想配什么?args列表中有对象吗?是的,在[1517725731.300][DEBUG]:DEVTOOLS EVENT Runtime.consoleAPICalled->{…}之后所有内容都是正确的。然后编辑您的问题以使其更清楚,并且日志的最后几行格式不正确。但是要回答您的问题,使用正则表达式解析JSON可能是不可能的,也可能是非常复杂的,除了效率很低之外。如果使用JSON库来解析日志,您会更幸运。不要试图对存在更好解决方案的正则表达式执行某些操作。