Java Spring批处理:如何处理多行日志文件
我正在尝试使用SpringBatch将日志文件的内容导入数据库 我目前正在使用FlatFileItemReader,但不幸的是,有许多日志条目无法捕获。两个主要问题是:Java Spring批处理:如何处理多行日志文件,java,spring,spring-batch,flat-file,Java,Spring,Spring Batch,Flat File,我正在尝试使用SpringBatch将日志文件的内容导入数据库 我目前正在使用FlatFileItemReader,但不幸的是,有许多日志条目无法捕获。两个主要问题是: 包含多行JSON字符串的行: 2012-03-22 11:47:35,307 DEBUG main someMethod(SomeClass.java:56): Do Something(18,true,null,null,null): my.json = '{ "Foo":"FooValue", "Bar":
2012-03-22 11:47:35,307 DEBUG main someMethod(SomeClass.java:56): Do Something(18,true,null,null,null): my.json = '{
"Foo":"FooValue",
"Bar":"BarValue",
... etc
}'
2012-03-22 11:47:50,596 ERROR main com.meetup.memcached.SockIOPool.createSocket(SockIOPool.java:859): No route to host
java.net.NoRouteToHostException: No route to host
at sun.nio.ch.Net.connect0(Native Method)
at sun.nio.ch.Net.connect(Net.java:364)
at sun.nio.ch.Net.connect(Net.java:356)
at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:623)
at sun.nio.ch.SocketAdaptor.connect(SocketAdaptor.java:92)
at com.meetup.memcached.SockIOPool$SockIO.getSocket(SockIOPool.java:1703)
at com.meetup.memcached.SockIOPool$SockIO.<init>(SockIOPool.java:1674)
at com.meetup.memcached.SockIOPool.createSocket(SockIOPool.java:850)
at com.meetup.memcached.SockIOPool.populateBuckets(SockIOPool.java:737)
at com.meetup.memcached.SockIOPool.initialize(SockIOPool.java:695)
2012-03-22 11:47:50596错误main com.meetup.memcached.SockIOPool.createSocket(SockIOPool.java:859):没有到主机的路由
java.net.NoRouteToHostException:没有到主机的路由
位于sun.nio.ch.Net.connect0(本机方法)
位于sun.nio.ch.Net.connect(Net.java:364)
位于sun.nio.ch.Net.connect(Net.java:356)
位于sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:623)
位于sun.nio.ch.SocketAdaptor.connect(SocketAdaptor.java:92)
位于com.meetup.memcached.SockIOPool$SockIO.getSocket(SockIOPool.java:1703)
在com.meetup.memcached.SockIOPool$SockIO。(SockIOPool.java:1674)
在com.meetup.memcached.SockIOPool.createSocket(SockIOPool.java:850)上
在com.meetup.memcached.SockIOPool.populateBuckets(SockIOPool.java:737)上
位于com.meetup.memcached.SockIOPool.initialize(SockIOPool.java:695)
基本上,我需要FlatFileItemReader继续读取,直到到达下一个时间戳,同时聚合之前的所有行。(在Spring Batch中)以前是否做过这样的事情?解决方案是编写一个自定义读取器,回溯最后几行并查找标记有效行开始的特定模式。我没有在SpringBatch中找到任何预先制作的东西,但我可以重用大量现有代码。该解决方案是专有的,因此我无法在此发布,抱歉,但它是这样工作的: