При поиске метода, который на самом деле записывает журнал в файл в библиотеке log4j, обнаружен метод ниже
public void callAppenders(LoggingEvent event) {
int writes = 0;
for (Category c = this; c != null; c = c.parent) {
synchronized (c) {
if (c.aai != null) {
writes += c.aai.appendLoopOnAppenders(event);
}
if (!c.additive) {
break;
}
}
}
if (writes == 0) {
this.repository.emitNoAppenderWarning(this);
}
}
Но я не могу понять, что происходит в цикле for.Может ли кто-нибудь помочь мне понять, что здесь происходит?Никогда не сталкивался с подобным фрагментом кода ..!
Обновление:
У меня есть код, где он использует один метод для входа в файлы журналов.И в этом методе он вызывает метод ниже, который поступает из библиотеки log4j
public void log(String callerFQCN, Priority level, Object message, Throwable t) {
if (this.repository.isDisabled(level.level)) {
return;
}
if (level.isGreaterOrEqual(getEffectiveLevel())) {
forcedLog(callerFQCN, level, message, t);
}
}
И отсюда происходит принудительный метод
protected void forcedLog(String fqcn, Priority level, Object message, Throwable t) {
callAppenders(new LoggingEvent(fqcn, this, level, message, t));
}
, который в конечном итоге вызывает упоминание callAppenders
упоминания метода сверху.И protected volatile Category parent;
присутствует в классе Category, где все вышеперечисленные методы также являются частью этого класса.
Спасибо