2012-09-21 53 views
0

我使用的是org.apache.http.client庫,它有一些默認日誌記錄。我還設置了log4j來處理我的通用日誌記錄和http客戶端日誌記錄。Log4J阻止HTTPClient登錄到MySQL

我遇到的問題是我不希望http客戶端記錄進入MySQL數據庫。

這裏是屬性文件的log4j: #定義控制檯的appender log4j.appender.consoleAppender = org.apache.log4j.ConsoleAppender

# now define the layout for the appender 
log4j.appender.consoleAppender.layout = org.apache.log4j.PatternLayout 
log4j.appender.consoleAppender.layout.ConversionPattern==%d{yyyy MM dd HH:mm:ss} %p %t %c - %m%n 

# now map our console appender as a root logger, means all log messages will go to this appender 
log4j.rootLogger = DEBUG, debugTrack, DB 
log4j.logger.org.apache=DEBUG, debugTrack, DB 
log4j.logger.infoLogger=INFO, infoTrack, DB 
log4j.logger.org.apache.http=httpcomm 
log4j.logger.org.apache.http.wire=httpcomm 

log4j.additivity.org.apache=false 
log4j.additivity.infoLogger=false 

log4j.appender.debugTrack=org.apache.log4j.RollingFileAppender 
log4j.appender.debugTrack.Threshold=DEBUG 
log4j.appender.debugTrack.File=log//debugTrack.log 
log4j.appender.debugTrack.MaxFileSize=2MB 
log4j.appender.debugTrack.MaxBackupIndex=2 
log4j.appender.debugTrack.layout = org.apache.log4j.PatternLayout 
log4j.appender.debugTrack.layout.ConversionPattern=%d{yyyy MM dd HH:mm:ss} %p %t %c - %m%n 

log4j.appender.infoTrack=org.apache.log4j.RollingFileAppender 
log4j.appender.infoTrack.Threshold=INFO 
log4j.appender.infoTrack.File=log//infoTrack.log 
log4j.appender.infoTrack.MaxFileSize=2MB 
log4j.appender.infoTrack.MaxBackupIndex=2 
log4j.appender.infoTrack.layout = org.apache.log4j.PatternLayout 
log4j.appender.infoTrack.layout.ConversionPattern=%d{yyyy MM dd HH:mm:ss} %p %t %c - %m%n 

log4j.appender.httpcomm=org.apache.log4j.RollingFileAppender 
log4j.appender.httpcomm.Threshold=DEBUG 
log4j.appender.httpcomm.File=log//HTTPCommunication.log 
log4j.appender.httpcomm.MaxFileSize=2MB 
log4j.appender.httpcomm.MaxBackupIndex=2 
log4j.appender.httpcomm.layout=org.apache.log4j.PatternLayout 
log4j.appender.httpcomm.layout.ConversionPattern=%d{yyyy MM dd HH:mm:ss} %p %t %c - %m%n 

log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender 
log4j.appender.DB.URL=jdbc:mysql://server/database 
log4j.appender.DB.driver=com.mysql.jdbc.Driver 
log4j.appender.DB.user=root 
log4j.appender.DB.password=******** 
log4j.appender.DB.sql=INSERT INTO tbl_logs(logDate,logger,level,message) VALUES('%d{yyyy-MM-dd HH:mm:ss}','%C','%p','%m') 
log4j.appender.DB.layout=org.apache.log4j.PatternLayout 

有一個信息記錄器和調試記錄儀,我希望保持記錄到文件和數據庫。我也希望保持HTTP客戶端記錄到文件但不保存到數據庫。

有人可以請指出我在正確的方向來實現這一目標嗎?

非常感謝 彌敦道

回答

1

您已設置了additivityfalse父包,這意味着什麼都不會從那裏傳播。也得到了這種行爲對log4j.logger.org.apache.http包,你需要設置這個太:

log4j.additivity.org.apache=false 
log4j.additivity.org.apache.http=false 
log4j.additivity.infoLogger=false 

另外請注意,沒有必要同時指定log4j.logger.org.apache.httplog4j.logger.org.apache.http.wire,第一個應該涵蓋。

+0

好的,感謝您的意見,這是有道理的,我已經做出了改變。但是,不,我收到以下消息: log4j:警告沒有可以爲記錄器找到appender(org.apache.http.impl.conn.BasicClientConnectionManager)。 log4j:WARN請正確初始化log4j系統。 關於這個的任何想法? – nathj07

+0

現在接受了答案 - 我通過確保正確定義了appender來解決了我以前的問題。我做了一些不需要的其他更改。 感謝您的幫助。 – nathj07