2010-08-12 43 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配置不起作用。

您能描述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 2010-08-13 00:06:45

+0

Tomcat.log(log4j)的輸出如下屬性文件: >錯誤http-8080-6 org.apache.catalina.loader.WebappClassLoader - Web應用程序似乎已啓動名爲[Timer-2]的線程,但是未能阻止它。這很可能造成內存泄漏。 >錯誤http-8080-6 org.apache.catalina.loader.WebappClassLoader - Web應用程序似乎已經啓動了一個名爲[Twitter Stream Handling Thread [建立連接]的線程],但未能阻止它。這很可能造成內存泄漏。 爲什麼twitter4j打印到標準輸出? – Roberto 2010-08-13 00:08:04