截取字符串问题,已爆炸

[00:58:08:179] [ERROR] - com.tsy.common.logging.ApplicationLoggerHelper.exception(ApplicationLoggerHelper.java:69) - traceID=2d8fcd1d-d48f-4468-9b4f-624600f979ac,class=class com.tsy.inventory.normal.sync.service.impl.InventorySyncServiceImpl,location=10.1.88.78,logtype=application,module=tsy-ticket-inventory,body=For input string: ""{},timestamp=1511197088179

这是日志文件,我需要截取traceId location logtype,module 这些有用的信息,如何截取,字段是固定的,但是内容可能长度不同

8个回答

og4j 或者一些 java log的jar 。记录的日志 大多都是 一样一条的 , 按行读取。 百万级并不是很大。 如果再大可以考虑使用 spark。
目前这种情况 。用BufferReader 足以。一行一行的读取。用正则去提取内容。 然后 截取

可以先把[00:58:08:179] [ERROR] - com.tsy.common.logging.ApplicationLoggerHelper.exception(ApplicationLoggerHelper.java:69) -这后面的东西映射成一个map集合,你从map集合取值就ok了。

这是个日志文件,百万行级的。。。我不知道如何映射

我要取到其中关键字段的数据,插入到数据库

log4j 或者一些 java log的jar 。记录的日志 大多都是 一样一条的 , 按行读取。 百万级并不是很大。 如果再大可以考虑使用 spark。
目前这种情况 。用BufferReader 足以。一行一行的读取。用正则去提取内容。 然后 截取

能简单贴一下代码吗,已经用BufferReader 一行一行读取,有用信息开头有规律,能匹配到想要行,知识不知道如何去截取

if(txtline.startsWith("[")){
sb.append(txtline);
logInfo.setTraceID(sb.substring(??, ???)); 懵逼了

利用indexof 判断第一次所要的关键字出现的下标截图解决

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问