2016-06-25 3 views
0

Я создаю приложение JSF, которое использует библиотеку expect4j, и мне очень трудно подавить вывод в журнале сервера Glassfish. Я попытался создать файл logging.properties в каталоге src/main/resources на основе файла logging.properties от expect4j. Я также попытался создать файл log4j2.xml, чтобы выполнить одно и то же. Я даже попытался переместить файл log4j2.xml в каталог WEB-INF рядом с web.xml на основании другого сообщения, которое я нашел в ходе исследования.Устранение сбоев в выходе журнала из баночки

Я хотел бы подавить его, потому что он генерирует много сообщений на уровне информации/отладки. Вот пример сообщения:

[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-апи: 1,2-Rev-1
  • javax.ejb-апи: 3.2
  • JSF-апи: 2.2.8-02
  • JSF-осущ : 2.2.8-02
  • primefaces: 5,2
  • log4j-страница: 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> 

Я смотрю на эту ссылку, но я не видел какой-либо из того, что он был направлен в JConsole когда я привязался к моему серверу из морской рыбы. Suppress java util logging from 3rd party jar.

Благодарим за любую помощь, которую вы могли бы предоставить.

ответ

2

Вы направляете весь свой выход slf4j в log4j 1.x с помощью slf4j-log4j12. Вместо этого вы должны использовать log4j-slf4j-impl. Если expect4j использует slf4j, вам не нужно использовать logging.properties. Хотя log4j-slf4j-impl должен включать их, вы должны также включить банки log4j-api и log4j-core. Если вы хотите, чтобы явный доступ к журнальному результату, адресованный log4j 2, также включал банку log4j-jul.

+0

Спасибо @rgoers, что, похоже, сделал трюк. Когда я изначально создавал проект eclipse, предложения, предлагаемые Maven, были неполными. Eclipse указывал, что индексирование Maven было отключено, поэтому я сделал поиск в Google, как включить его, и в итоге у меня появился более полный репозиторий для поиска. Это дало мне все библиотеки slf4j и log4j, в которых я нуждался. В моем случае с библиотекой expect4j, java.util.logging не требовался, поскольку библиотека использует slf4j. В очередной раз благодарим за помощь. – klog