我正在编写一个读取日志文件的批处理,这些日志文件应该采用多种类型(日志日志文件的格式)然后我想根据日志文件中的某些字符读取每个文件,例如
15:31:44,437 INFO <NioProcessor-32> Send to <SLE-
15:31:44,437 INFO <NioProcessor-32> [{2704=5, 604=1, {0=023pdu88mW00007z}]
15:31:44,437 DEBUG <NioProcessor-32> SCRecord 2944
在这样的日志文件中,我想只读取包含&#39;的日志行。 [{}]&#39;并忽略所有其他人。我试图在项目阅读器中阅读并将其拆分为对象,但我无法弄清楚如何。我认为我应该创建一个自定义项目阅读器或类似的东西;我的Logline类看起来太简单了:
public class logLine {
String idOrder;
字符串时间;
字符串标签;
}
和我的项目阅读器看起来像:
public FlatFileItemReader<logLine> customerItemReader() {
FlatFileItemReader<logLine> reader = new FlatFileItemReader<>();
reader.setResource(new ClassPathResource("/data/customer.log"));
DefaultLineMapper<LogLine> customerLineMapper = new DefaultLineMapper<>();
DelimitedLineTokenizer tokenizer = new DelimitedLineTokenizer();
tokenizer.setNames(new String[] {"idOrder", "date", "tags"});
customerLineMapper.setLineTokenizer(tokenizer);
customerLineMapper.setFieldSetMapper(new CustomerFieldSetMapper());
reader.setLineMapper(customerLineMapper);
return reader;
}
如何在此项目阅读器中添加过滤器以仅读取包含[{
没有完成工作 项目处理器
答案 0 :(得分:0)
对于不包含&#39;的日志行,过滤处理器应返回null。 [{}]&#39; 。
这些行将在下一个处理器和编写器中自动忽略。