0

我正在使用 org.apache.http.client 库,这有一些默认日志记录。我还设置了 log4j 来处理我的常规日志记录和 http 客户端日志记录。

我遇到的问题是我不希望 http 客户端登录到 MySQL 数据库。

这是 log4j 的属性文件:#define 控制台附加程序 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 客户端记录到文件而不是数据库。

有人可以指出我实现这一目标的正确方向吗?

非常感谢内森

4

1 回答 1

1

您已为父包设置了additivityto false,这意味着不会从那里传播任何内容。要获得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,第一个应涵盖两者。

于 2012-09-21T11:00:43.380 回答