Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -90,16 +90,6 @@ public Log4j2Info(String name, Level level, boolean isSet) {

private final boolean isSet;

@Override
public String getLevel() {
return (level != null) ? level : null;
}

@Override
public String getName() {
return name;
}

@Override
public boolean isSet() {
return isSet;
Expand Down Expand Up @@ -199,12 +189,15 @@ public Collection<LoggerInfo> getAllLoggers() {
continue;
}

// NOTE: just because we have an explicit configuration, doesn't mean we have an explitly set
// level
// (Configuration might be for some other property, and level is still inherited)
// NOTE: just because we have an explicit configuration, doesn't mean we have an explicitly
// set level (Configuration might be for some other property, and level is still inherited)
map.putIfAbsent(
name,
new Log4j2Info(name, logger.getLevel(), null != config.getValue().getExplicitLevel()));

// Also add parent loggers in the hierarchy, as they are relevant for level inheritance
// This ensures parent loggers appear even if not in ctx.getLoggers()
addParentLoggers(name, map, ctx);
}

// Now add any "in use" loggers (that aren't already explicitly configured) and their parents
Expand All @@ -218,18 +211,36 @@ public Collection<LoggerInfo> getAllLoggers() {
// If we didn't already see a LoggerConfig for these loggers, then their level is
// not (explicitly) set
map.putIfAbsent(name, new Log4j2Info(name, logger.getLevel(), false));
while (true) {
int dot = name.lastIndexOf('.');
if (dot < 0) break;

name = name.substring(0, dot);
map.putIfAbsent(name, new Log4j2Info(name, logger.getLevel(), false));
}
addParentLoggers(name, map, ctx);
}

return map.values();
}

/**
* Adds all parent loggers in the hierarchy for the given logger name.
*
* <p>For example, given "org.apache.solr.core.SolrCore", this will add:
*
* <ul>
* <li>"org.apache.solr.core"
* <li>"org.apache.solr"
* <li>"org"
* </ul>
*/
private void addParentLoggers(
String loggerName, Map<String, LoggerInfo> map, LoggerContext ctx) {
String parentName = loggerName;
while (true) {
int dot = parentName.lastIndexOf('.');
if (dot < 0) break;

parentName = parentName.substring(0, dot);
map.putIfAbsent(
parentName, new Log4j2Info(parentName, ctx.getLogger(parentName).getLevel(), false));
}
}

@Override
public void setThreshold(String level) {
Log4j2Appender app = getAppender();
Expand Down
Loading