无法抑制jar的日志输出

时间:2016-06-25 21:08:36

标签: java logging log4j glassfish-4

我正在构建一个使用expect4j库的JSF应用程序,并且很难抑制glassfish服务器日志中的输出。我尝试根据expect4j的logging.properties文件在src / main / resources目录中创建logging.properties文件。我还尝试创建一个log4j2.xml文件来完成同样的事情。我甚至尝试将log4j2.xml文件移动到web.xml旁边的WEB-INF目录,这是基于我通过研究发现的另一篇文章。

我想抑制它,因为它会在信息/调试级别生成大量消息。以下是该消息的示例:

[2016-06-25T14:36:06.195-0600] [glassfish 4.1] [INFO] [] [] [tid: _ThreadID=225 _ThreadName=Thread-8] [timeMillis: 1466886966195] [levelValue: 800] [[4229 [__ejb-thread-pool5] DEBUG expect4j.Expect4j  - Found EOF]]

查看expect4j,它似乎只依赖于slf4j,所以我不应该将log4j2定义为我的记录器。

以下是我在maven项目中包含的以下依赖项:

  • expect4j:1.6
  • slf4j-log4j12:1.7.7
  • jstl:1.2
  • jstl-api:1.2-rev-1
  • javax.ejb-api:3.2
  • jsf-api:2.2.8-02
  • jsf-impl:2.2.8-02
  • primefaces:5.2
  • log4j-web:2.6.1

以下是我在logging.properties文件中的内容:

handlers=java.util.logging.ConsoleHandler
.level=INFO
java.util.logging.ConsoleHandler.level=INFO
#expect4j.handler=java.util.logging.ConsoleHandler
expect4j.level=SEVERE

以下是我在log4j2.xml文件中的内容:

<?xml version="1.0" encoding="UTF-8" ?>
<Configuration status="INFO">
  <Appenders>
    <Console name="Console" target="STDOUT">
      <PatternLayout
        pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
    </Console>
  </Appenders>
  <Loggers>
    <Logger name="expect4j" level="error" additivity="false">
      <AppenderRef ref="Console" />
    </Logger>
    <Root level="warn">
      <AppenderRef ref="Console" />
    </Root>
  </Loggers>
</Configuration>

我确实看过这个链接,但当我连接到我的glassfish服务器时,我没有看到它在jconsole中指出的任何内容。 Suppress java util logging from 3rd party jar

感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:2)

使用slf4j-log4j12将所有slf4j输出路由到log4j 1.x.相反,您应该使用log4j-slf4j-impl。如果expect4j正在使用slf4j,则不需要logging.properties。虽然log4j-slf4j-impl应该包含它们,但你还应该包括log4j-api和log4j-core jar。如果你想将java util日志输出定向到log4j 2,那么还要包含log4j-jul jar。