将log4j与继承的类一起使用

时间:2009-09-10 18:27:51

标签: java inheritance log4j

我在类中实例化一个log4j对象,该类继承了父类的大部分方法和属性。现在我只从子类获取日志消息。如何在超类和子类中输出日志消息?

编辑:我记录的方式是我在子类和超类中都有一个实例变量,所以看起来如下所示:

public class SuperClass {
/**
 * Logger for this class
 */
private static final Logger logger = Logger.getLogger(SuperClass.class); 

/* Rest of code goes here */
} // end SuperClass

对于子类也一样。

我的log4j配置:

## gps log4j.rootLogger==ERROR, clientLog, catissuecoreclientLog

log4j.rootLogger==DEBUG, clientLog, catissuecoreclientLog
### direct messages to file hibernate.log ###

log4j.appender.clientLog=org.apache.log4j.FileAppender
log4j.appender.clientLog.File=./log/client.log
log4j.appender.clientLog.layout=org.apache.log4j.PatternLayout
log4j.appender.clientLog.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

log4j.appender.catissuecoreclientLog=org.apache.log4j.FileAppender
log4j.appender.catissuecoreclientLog.File=./log/catissuecoreclient.log
log4j.appender.catissuecoreclientLog.layout=org.apache.log4j.PatternLayout
log4j.appender.catissuecoreclientLog.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1} - %m%n

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###

#log4j.rootLogger=warn, stdout
#log4j.rootLogger=warn, file
#log4j.logger.org.hibernate=info

### log just the SQL
#log4j.logger.org.hibernate.SQL=debug

### log JDBC bind parameters ###
log4j.logger.org.hibernate.type=info

### log schema export/update ###
log4j.logger.org.hibernate.tool.hbm2ddl=debug

### log cache activity ###
#log4j.logger.org.hibernate.cache=debug

### log JDBC resource acquisition
#log4j.logger.org.hibernate.jdbc=debug

### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace

2 个答案:

答案 0 :(得分:1)

您还需要在超类中显示记录器。

通常,设置是在每个类中创建一个logger静态变量,以允许每个类具有不同的日志记录级别。 e.g。

private static final Logger LOG = Logger.getLogger( ClassName.class.getName() );

您输入班级名称而不是ClassName

答案 1 :(得分:1)

嗯......通过实际记录它们?

您需要从任何要记录消息的类的方法调用log4j的日志记录方法(debug()info()error()等...)。然后,您可以(在log4j.properties中)配置哪些消息可见/已记录/转到哪个日志文件/等等...每个类级别(如果您这样选择)。