RainJ created LOG4J2-552:
----------------------------
Summary: Logic of isInstanceOf are not consistent in log4j-api's
Log4jMarker and log4j-slf4j-impl's MarkerWrapper
Key: LOG4J2-552
URL: https://issues.apache.org/jira/browse/LOG4J2-552
Project: Log4j 2
Issue Type: Bug
Components: API, SLF4J Bridge
Affects Versions: 2.0-rc1
Reporter: RainJ
The logic of isInstanceOf is not consistent for Marker implements in
log4j-api's Log4jMarker and log4j-slf4j-iml's MarkerWrapper.
In Log4jMarker
---------------------------------------------
@Override
public boolean isInstanceOf(final String name) {
if (name == null) {
throw new IllegalArgumentException("A marker name is required");
}
Marker toTest = this;
do {
if (name.equals(toTest.getName())) {
return true;
}
toTest = toTest.getParent();
} while (toTest != null);
return false;
}
---------------------------------------------
in MarkerWrapper
---------------------------------------------
@Override
public boolean isInstanceOf(final Marker marker) {
if (marker == null) {
throw new IllegalArgumentException("A marker parameter is
required");
}
if (marker instanceof MarkerWrapper) {
return contains((MarkerWrapper) marker);
} else {
return contains(marker.getName());
}
}
@Override
public boolean isInstanceOf(final String name) {
if (name == null) {
throw new IllegalArgumentException("A marker name is required");
}
return contains(name);
}
-----------------------------------------
in Log4jMarker, the isInstanceOf means the marker is instance of itself or its
parent
in MarkerWrapper, the isInstance of means the marker is instance of itself or
its children
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]