2010-08-12 1 views
1

Я совершенно новый с Tomcat и Java в целом. Я развертываю приложение Tomcat6 и использую библиотеку twitter4j для совершения звонков на Twitter.com. Я установил регистрацию в Tomcat, чтобы быть log4j, используя следующую конфигурацию:Как избежать twitter4j регистрации всего, что он делает в Tomcat?

log4j.rootLogger=ERROR, R 
log4j.appender.R=org.apache.log4j.RollingFileAppender 
log4j.appender.R.File=${catalina.base}/logs/tomcat.log 
log4j.appender.R.MaxFileSize=10MB 
log4j.appender.R.MaxBackupIndex=10 
log4j.appender.R.layout=org.apache.log4j.PatternLayout 
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n 

И все это хорошо. Однако twitter4j предпочитает регистрировать все, что он делает. В результате я получаю огромный файл журнала, который ничего мне не говорит. Есть что-то, что мне не хватает? Кто-нибудь здесь пытался что-то подобное? т.е. twitter4j и Tomcat, и имеет некоторое представление о том, как избежать всех этих журналов:

[twitter4j.internal.logging.Logger]: Using class twitter4j.internal.logging.SLF4JLoggerFactory as logging factory. 
[twitter4j.internal.http.HttpClientFactory]: Use twitter4j.internal.http.HttpClientImpl as HttpClient implementation. 
[twitter4j.internal.http.HttpClientImpl]: Request: 
[twitter4j.internal.http.HttpClientImpl]: GET api.twitter.com/1/friends/ids.json?cursor=-1 
[twitter4j.internal.http.HttpClientImpl]: X-Twitter-Client-URL:twitter4j.org/en/twitter4j-2.1.3-SNAPSHOT(build:e903c577fb3401b4c66037dfc477e73e6851e8e1).xml 
[twitter4j.internal.http.HttpClientImpl]: X-Twitter-Client: Twitter4J 
[twitter4j.internal.http.HttpClientImpl]: Accept-Encoding: gzip 
[twitter4j.internal.http.HttpClientImpl]: User-Agent: twitter4j http://twitter4j.org//2.1.3-SNAPSHOT(build:e903c577fb3401b4c66037dfc477e73e6851e8e1) 
[twitter4j.internal.http.HttpClientImpl]: X-Twitter-Client-Version:2.1.3-SNAPSHOT(build: e903c577fb3401b4c66037dfc477e73e6851e8e1) 
[twitter4j.internal.http.HttpClientImpl]: Connection: close 
[twitter4j.internal.http.HttpClientImpl]: Response: 
[twitter4j.internal.http.HttpClientImpl]: HTTP/1.1 200 OK 
[twitter4j.internal.http.HttpClientImpl]: X-Runtime: 0.06539 
[twitter4j.internal.http.HttpClientImpl]: ETag:"89c0c8cb8befe1371d08f1b6671b08de"-gzip 
[twitter4j.internal.http.HttpClientImpl]: X-Transaction:1281584957-49704-11766 
[twitter4j.internal.http.HttpClientImpl]: X-RateLimit-Limit: 20000 
[twitter4j.internal.http.HttpClientImpl]: X-RateLimit-Remaining: 19999 
[twitter4j.internal.http.HttpClientImpl]: Content-Length: 89 
[twitter4j.internal.http.HttpClientImpl]: Expires: Tue, 31 Mar 1981 05:00:00 GMT 
[twitter4j.internal.http.HttpClientImpl]: Last-Modified: Thu, 12 Aug 2010 03:49:17 GMT 
[twitter4j.internal.http.HttpClientImpl]: X-RateLimit-Reset: 1281588557 
[twitter4j.internal.http.HttpClientImpl]: X-RateLimit-Class: api_whitelisted 
[twitter4j.internal.http.HttpClientImpl]: X-Revision: DEV 
[twitter4j.internal.http.HttpClientImpl]: Set-Cookie: lang=en; path= 

и т.д., и т.д., и т.д.

Спасибо так много для любой проницательности вы могли бы иметь. В настоящий момент это действительно сбивает меня с ума.

ответ

1

Вложенные вами журналы указывают на то, что шаблон, который вы указали в своей конфигурации, не применяется (например,% p - это уровень журнала, но уровень журнала не находится на выходе). Это заставляет меня думать, что ваш log4j config не работает.

Можете ли вы описать, где находится файл свойств log4j, и где файл log4j jar находится в вашем приложении?

Ваш log4j.properties должен быть /WEB-INF/classes/log4j.properties, а log4j.jar должен быть в /WEB-INF/lib.

Также похоже, что twitter4j использует SLF4j, а не log4j. Я думаю, вам просто нужно включить библиотеку slf4j-logj12.jar в путь класса, а также перейти на реализацию log4j.

+0

Я просто попробовал ваши предложения. Файл log4j.properties находится в /WEB-INF/classes/log4j.properties, а log4j.jar - в/web-inf/lib. Я просто добавил slf4j-logj12.jar в/WEB-INF/lib. Когда я повторно развернул приложение, у меня остались те же сообщения. Этот выход - от catalina.out. – Roberto

+0

Выход из Tomcat.log (log4j) следует за файлом свойств: > ERROR http-8080-6 org.apache.catalina.loader.WebappClassLoader - веб-приложение, похоже, начало поток с именем [Timer-2], но не смог остановить его. Вероятно, это приведет к утечке памяти. > ERROR http-8080-6 org.apache.catalina.loader.WebappClassLoader - веб-приложение, похоже, запустило поток с именем [Twitter Stream Handling Thread [Установление соединения]], но не смог его остановить. Вероятно, это приведет к утечке памяти. Почему печать twitter4j на stdout? – Roberto