2009-09-10 62 views
1

我正在實例化一個類中的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 
+0

什麼是「log4j對象」? – skaffman 2009-09-10 18:42:08

+0

上面代碼示例中的記錄器實例變量。 – Brian 2009-09-10 18:50:11

+0

我把它加倍等於登錄'log4j.rootLogger == DEBUG'是一個錯字?另外,log4j.rootLogger中未指定stdout appender – ChssPly76 2009-09-10 19:17:56

回答

1

你需要做記錄的超類可看見的。

通常情況下,設置是在每個類中創建一個記錄器靜態變量,以允許每個類具有不同的記錄級別。 例如

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

當您通過實際登錄他們進入你的類的名稱,而不是類名

1

嗯...?

您需要從您希望記錄消息的任何類的任何方法調用log4j的日誌記錄方法(debug()info(),error()等)。然後,您可以配置(在您的log4j.properties中)哪些消息可見/記錄/轉到什麼日誌文件/等...每個類級別(如果您願意的話)。

+0

即將鍵入此... +1 – vpram86 2009-09-10 18:36:38

+0

我確實知道如何調用日誌記錄方法 - 這不是問題。問題是我沒有從超類獲取任何日誌語句。我已將logging的級別配置爲DEBUG。 – Brian 2009-09-10 18:45:28

+0

你可以發佈你的log4j配置嗎?是否將'SuperClass'和子類都設置爲DEBUG級別? – ChssPly76 2009-09-10 18:57:59