我正在类中实例化一个 log4j 对象,该类继承了父类的大部分方法和属性。现在我只从子类获取日志消息。如何在父类(super class)和子类中输出日志消息?
编辑:我进行日志记录的方式是在子类和父类(super class)中都有一个实例变量,因此它看起来如下所示:
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
最佳答案
您还需要使记录器在父类(super class)中可见。
通常设置是在每个类中创建一个记录器静态变量,以允许每个类具有不同的日志记录级别。 例如
private static final Logger LOG = Logger.getLogger( ClassName.class.getName() );
在其中输入类(class)名称而不是 ClassName
关于java - 将 log4j 与继承的类一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1406931/