2009-09-10 3 views
1

J'instancie un objet log4j à l'intérieur d'une classe qui hérite de la plupart des méthodes et des attributs d'une classe parente. En ce moment, je reçois des messages de journalisation de la sous-classe uniquement. Comment puis-je obtenir des messages de journalisation à la fois dans la super classe et dans la sous-classe?Utilisation de log4j avec des classes héritées

EDIT: La façon dont je suis pas l'exploitation forestière est que j'ai une variable d'instance dans les deux sous-classe et superclasse, il ressemblerait à quelque chose comme ce qui suit:

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

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

Et même pour la sous-classe.

Ma configuration 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

Qu'est-ce qu'un "objet log4j"? – skaffman

+0

La variable d'instance de consignateur figurant dans l'exemple de code ci-dessus. – Brian

+0

Je le prends double signe égal dans 'log4j.rootLogger == DEBUG' est une faute de frappe? En outre, stdout appender n'est pas spécifié dans log4j.rootLogger – ChssPly76

Répondre

1

Vous devrez faire l'enregistreur visible en super classe aussi bien.

Normalement, l'installation consiste à créer une variable statique d'enregistreur dans chaque classe pour permettre à chaque classe d'avoir un niveau d'enregistrement différent. par exemple.

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

Si vous entrez le nom de votre classe au lieu de ClassName

1

Umm ... en fait les enregistrer?

Vous devez appeler les méthodes de journalisation de log4j (debug(), info(), error(), etc ...) à partir de n'importe quelle méthode de la classe de laquelle vous souhaitez consigner le message. Vous pouvez ensuite configurer (dans votre log4j.properties) quels messages sont visibles/connectés/aller à quel fichier journal/etc ... par niveau de classe (si vous le souhaitez).

+0

Étais sur le point de taper ceci ... +1 – vpram86

+0

Je sais comment invoquer les méthodes de journalisation - ce n'est pas le problème. Le problème est que je ne reçois aucune des instructions de journalisation de la superclasse. J'ai configuré le niveau de journalisation pour être DEBUG. – Brian

+0

Pouvez-vous poster votre configuration log4j? La journalisation de "SuperClass" et de sous-classe est-elle définie sur le niveau DEBUG? – ChssPly76

Questions connexes