禁用 OWL API 日志消息

Disable OWL API logging messages

我正在使用 OWL(版本 4.0.2)e Pellet (3.0) 填充 ontology,然后使用 SWRL 规则推断新事实。但是 OWL API 中的一些 jar 在我尝试进行推断时打印了大量消息,但最终没有显示结果 - 事实上,我没有等到最后,因为它需要永远执行。

这是我设置一些 ontology 信息的地方:

manager = OWLManager.createOWLOntologyManager();
    factory = manager.getOWLDataFactory();   
    this.ontologyURI = ontologyURI;
    pm = new DefaultPrefixManager(null, null,
            ontologyURI);


    File ontologyFile = new File("TwitterOntology.owl");
    try {
        ontology = manager.loadOntologyFromOntologyDocument(ontologyFile);
    } catch (OWLOntologyCreationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

我把部分日志发给你:

14:54:38.961 [main] DEBUG o.s.o.rdf.rdfxml.parser.TripleLogger - 三元组总数:4788 14:54:38.966 [main] DEBUG o.s.o.r.r.p.OptimisedListTranslator - 列表:ObjectPropertyAtom(http://www.semanticweb.org/michel/ontologies/2014/6/TwitterOntology#hashtagContainedInTweetRule Variable() Variable()) 14:54:38.967 [main] DEBUG o.s.o.r.r.p.OptimisedListTranslator - 列表:ObjectPropertyAtom(http://www.semanticweb.org/michel/ontologies/2014/6/TwitterOntology#posts Variable() Variable()) 14:54:38.967 [main] DEBUG o.s.o.r.r.p.OptimisedListTranslator - 列表:DataPropertyAtom()

14:54:40.316 [main] INFO c.c.o.e.BlackBoxExplanation - 初始公理数:50 14:54:40.319 [main] INFO c.c.o.e.BlackBoxExplanation - 扩展公理(扩展 0) 14:54:40.320 [main] INFO c.c.o.e.BlackBoxExplanation - ... 扩展了 62 14:54:40.321 [main] INFO c.c.o.e.BlackBoxExplanation - 扩展公理(扩展 1) 14:54:40.322 [main] INFO c.c.o.e.BlackBoxExplanation - ... 扩展了 77 14:54:40.324 [main] INFO c.c.o.e.BlackBoxExplanation - 扩展公理(扩展 2) 14:54:40.324 [main] INFO c.c.o.e.BlackBoxExplanation - ... 扩展了 96 14:54:40.328 [main] INFO c.c.o.e.BlackBoxExplanation - 扩展公理(扩展 3) 14:54:40.328 [main] INFO c.c.o.e.BlackBoxExplanation - ... 扩展了 120 14:54:40.333 [main] INFO c.c.o.e.BlackBoxExplanation - 扩展公理(扩展 4) 14:54:40.334 [main] 信息 c.c.o.e.BlackBoxExplanation - ... 扩展了 150

如果你们中的一些人能给我任何提示,我将非常感激。

此致, 米歇尔

Slf4j 是正在使用的日志库,看起来你的日志级别很低。

检查类路径中是否有 simplelogger.properties 文件,并设置 org.slf4j.simple logger.defaultLogLevel=error

根据现有设置,您可能需要更改一些其他本地配置。

我想出了解决问题的方法。我把答案放在这里以防你们中的任何人面临同样的问题:

我在我的代码中使用了 slf4j-api-1.7.12.jar。这个 jar 需要来自 "org.slf4j.impl.StaticLoggerBinder" 的 .class。我没有注意到我已经将以下 jar 放在我的 class 路径中:ch.qos.logback.classic-0.9.28.jar。最后一个罐子有 "org.slf4j.impl.StaticLoggerBinder".class。但问题是它会在运行时打印大量日志消息。

我使用另一个 jar - slf4j-nop-1.7.12.jar 解决了这个问题 - 而不是 - ch.qos.logback.classic-0.9.28.jar - 具有 .class 我需要但在运行时不打印任何消息。

希望我说清楚了。