Tika:如何启用调试输出?

时间:2015-04-28 21:11:55

标签: logging apache-tika

直到昨天,我才用Tika解析Office文档。这些程序挂在这里:

InputStream input = TikaInputStream.get(new File(sourceUrl));
ContentHandler content = new BodyContentHandler(-1);
LinkContentHandler links = new LinkContentHandler();
ContentHandler handler = new TeeContentHandler(links, content);
Metadata metadata = new Metadata();
Parser parser = new AutoDetectParser();
ParseContext context = new ParseContext();
parser.parse(input,handler,metadata,context); // HANGS HERE!

如何启用调试输出?这有助于我找到原因。

编辑:看起来答案比我想象的要复杂得多...... http://wiki.apache.org/tika/Logging

1 个答案:

答案 0 :(得分:1)

这取决于您要提取的文件类型。 Tika使用许多第三方库,而这些库又使用不同的日志框架。

例如, pdfbox使用log4j poi使用自定义日志记录。

对于pdfbox,它是直截了当的。只需创建一个log4j.properties并设置pdfbox包即可登录DEBUG。

对于poi,你必须做更多。启用apache-commons日志记录,并将POILogger设置为CommonLogger,

System.setProperty("org.apache.poi.util.POILogger", "org.apache.poi.util.CommonsLogger" );

以下是我的log4j.properties的样子,

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} %5p %t %c{2}:%L - %m%n

log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.stdout.Target=System.out
log4j.appender.file.File=log/filecrawler.log
log4j.appender.file.MaxFileSize=100MB
log4j.appender.file.MaxBackupIndex=2
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ISO8601} %5p %t %c{2}:%L - %m%n

log4j.rootLogger=DEBUG, file, stdout

# for pdfbox
log4j.logger.org.apache.pdfbox.pdmodel.font=DEBUG