java - 将 log4j 与继承的类一起使用

标签 java inheritance log4j

我正在类中实例化一个 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/

相关文章:

java - 如何使用canvas随机绘制?

python - 从 python 中的列表继承时出现奇怪的行为

c++ - C++ 中的命名空间类模板继承

c++子类访问基类

java - 更改 Apache Storm 拓扑的 Log4J 配置

java - 在运行时更改 log4j 属性文件导致创建一个空的默认日志

java - 如何使用java复制curl命令?

java - jar 文件外部的 ResourceBundles

java - 配置 org.apache.log4j.rolling.RollingFileAppender

java - 如何说服其他开发人员不要忽略异常?