Я использую log4j-1.2.14. В классе ведения журнала я разделил класс SyslogAppender и переопределил метод append (), главным образом просто для того, чтобы поиграться с информацией LoggingEvent.
Проблема в том, что существует только один вызов «log», но у подкласса appender есть метод append (), вызываемый дважды, и два сообщения журнала затем записываются в Syslog. Может кто-нибудь сказать мне, почему это так, и что я могу сделать, чтобы фактически зарегистрировать сообщение только один раз (как и предполагалось).
Пример кода из класса регистрации:
private static Logger syslogger = Logger.getLogger(LoggingManager.class);
syslogAppender = new NewSyslogAppender();
syslogAppender.setSyslogHost(SYSLOG_HOST);
syslogAppender.setThreshold(SYSLOG_PRIORITY);
syslogAppender.setFacility(SYSLOG_FACILITY);
syslogAppender.setLayout(new PatternLayout(SYSLOG_PATTERN));
syslogAppender.activateOptions();
syslogger.addAppender(syslogAppender);
syslogger.info(some string message);
Пример кода из подкласса SyslogAppender (частный класс из класса журналирования выше):
private class NewSyslogAppender extends SyslogAppender {
@Override
public void append(LoggingEvent event) {
// ...snip...create a new LoggingEvent with some of the old event information
super.append(newLoggingEvent);
}
Заранее спасибо!
постскриптум Там нет записей в любом файле конфигурации log4j для этого регистратора. Файл конфигурации log4j имеет корневой регистратор, использующий консольный appender.