[
https://issues.apache.org/jira/browse/LOG4J2-585?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13960989#comment-13960989
]
Ralph Goers edited comment on LOG4J2-585 at 4/5/14 6:04 AM:
------------------------------------------------------------
You mention that your code is slower so long as the marker depth is less than
5. I would guess that means that about 98% of the time it will be slower and
about 50% of the time it will be 3 times slower. I would not be in favor of
that.
I will take a look at this this weekend and see how this can be done.
I'd also really like to understand a real use case you might have for
dynamically changing Markers. Without that requirement it would be easy to
just add {code}
getMarker(String name, String[] parents)
getMarker(String name, Marker[] parents)
{code}
to MarkerManager with what I would imagine to be very little impact.
Can you add the code you used to test your implementation to this issue if it
isn't already part of the patch? I'd like to use that to test whatever I might
do.
was (Author: [email protected]):
You mention that your code is slower so long as the marker depth is less than
5. I would guess that means that about 98% of the time it will be slower and
about 50% of the time it will be 3 times slower. I would not be in favor of
that.
I will take a look at this this weekend and see how this can be done.
I'd also really like to understand a real use case you might have for
dynamically changing Markers. Without that requirement it would be easy to
just add {code}
getMarker(String name, String[] parents)
getMarker(String name, Marker[] parents)
{code}
to MarkerManager with what I would imagine to be very little impact.
> Markers not as powerful as slf4j
> --------------------------------
>
> Key: LOG4J2-585
> URL: https://issues.apache.org/jira/browse/LOG4J2-585
> Project: Log4j 2
> Issue Type: Improvement
> Components: API
> Affects Versions: 2.0-rc1
> Reporter: Bruce Brouwer
> Attachments: log4j2-585-concept.patch
>
>
> Log4J's markers are not as flexible as markers in SLF4J.
> First, SLF4J's markers are mutable. By allowing markers to be mutable, I can
> change the relationship of markers to each other based upon runtime or
> business conditions.
> Second, and more importantly I think, is that essentially SLF4J markers have
> this parent/child relationship, much like Log4J, except that in SLF4J, I can
> essentially have a marker with multiple parents. For example, I might want
> this structure:
> * Animal
> ** Bird
> *** Duck
> ** Mammal
> *** Bear
> *** Dolphin
> * Travels by
> ** Water
> *** Duck
> *** Dolphin
> ** Land
> *** Duck
> *** Bear
> ** Air
> *** Duck
> Of course, this is a contrived example, but I wanted to describe the
> relationships. Now, if I wanted to filter based on markers that travel by
> Water for some appenders, and another appender wants to filter by Mammals, I
> can't simply use the single marker of Dolphin.
> Either we need to reverse the marker relationship so that it contains its
> children, much like SLF4J, or we allow markers to have multiple parents,
> which I prefer because it could make it more succinct to define:
> {code}
> private static final Marker BY_LAND = MarkerManager.getMarker("BY_LAND");
> private static final Marker BY_WATER = MarkerManager.getMarker("BY_WATER");
> private static final Marker DUCK = MarkerManager.getMarker("DUCK", BY_LAND,
> BY_WATER);
> {code}
> As for the Marker API, we would either need to change getParent to
> getParents, or get rid of the getParent method from the API and just rely on
> the isInstanceOf method to handle checking multiple parents by looking at
> private member variables (my preference)
--
This message was sent by Atlassian JIRA
(v6.2#6252)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]