Использование log4j с унаследованными классами - PullRequest
1 голос
/ 10 сентября 2009

Я создаю экземпляр объекта 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 ]

1 голос
/ 10 сентября 2009

Хм ... на самом деле, регистрируя их?

Вам необходимо вызывать методы ведения журнала log4j (debug(), info(), error() и т. Д.) Из любого метода любого класса, из которого вы хотите записать сообщение. Затем вы можете настроить (в вашем log4j.properties), какие сообщения будут видны / регистрироваться / переходить в какой файл журнала / и т. Д. ... для уровня класса (если вы выберете).

1 голос
/ 10 сентября 2009

Вам также понадобится сделать регистратор видимым и в суперклассе.

Обычно установка состоит в том, чтобы создать статическую переменную логгера в каждом классе, чтобы каждый класс имел разный уровень логирования. например,

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

Где вы вводите имя вашего класса вместо ClassName

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...