java - Spring 批处理 : How to process multi-line log files

标签 java spring spring-batch flat-file

我正在尝试使用 Spring Batch 将日志文件的内容导入数据库。

我目前正在使用 FlatFileItemReader,但遗憾的是有许多日志条目未被捕获。两个主要问题是:

  1. 包含多行 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":"BarValue",
        ... etc
    }'
    
  2. 包含堆栈跟踪的行

    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)
    

基本上,我需要 FlatFileItemReader 继续读取直到它到达下一个时间戳,同时聚合之前的所有行。之前有没有做过这样的事情(在 Spring Batch 中)

最佳答案

Spring Batch documentation 中现在有一个常见问题解答解决这个用例。

关于java - Spring 批处理 : How to process multi-line log files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9939851/

相关文章:

java - 从java内部找到调试端口

java - BitmapFactory.decodeResource 在 Android 2.2 中返回一个可变位图,在 Android 1.6 中返回一个不可变位图

java - 从 JNI 获取 java 中的空字节数组

spring - 自定义 WebSecurityConfigurerAdapter

java - 如何在 Spring 批处理应用程序中创建 List 或 ArrayList 对象单例。如何在 java spring batch/boot 中将字段注释为单例

java - 无法启动代理

java - Spring boot 多数据源配置

java - 如何让 Java rest api 调用立即返回而不是等待?

java - 如何优化 SELECT DISTINCT sql 的分页?

java - 无效的列名异常 - 带别名的 JdbcPagingItemReader 查询