[ 
https://issues.apache.org/jira/browse/LOG4J2-601?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15201251#comment-15201251
 ] 

Joern Huxhorn commented on LOG4J2-601:
--------------------------------------

A {{Result filter(Logger logger, Level level, Marker marker)}} method would 
have to somehow indicate a "I can't decide"/"I know that I know nothing" state.

That state would have to propagate up in case of a composite filter. If any of 
the contained filters say "I can't decide" then {{isEnabled(Level, Marker)}} 
needs to work like {{isEnabled(Level)}} since only the actual logging call can 
know whether or not the event will be logged, i.e. it must pass the "enabled" 
check.

Returning {{null}} and handling it appropriately would be an easy way to 
implement such a "I can't decide" state.

The alternative would require a new {{Result}} enum value like 
{{QUANTUM_SUPERPOSITION}} but I think returning {{null}} is actually better in 
this case, semantically.

> Log.log and isEnabled react differently for marker filters
> ----------------------------------------------------------
>
>                 Key: LOG4J2-601
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-601
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Filters
>    Affects Versions: 2.0-rc1
>         Environment: OSX 10.8/10.9, Eclipse, Java 1.6/1.7
>            Reporter: Dan Hagberg
>         Attachments: DbMarkers.java, TestLog2.java, 
> console_atConfigLevel.txt, console_atLoggerLevel.txt, console_noFilter.txt, 
> log4j2_atConfigLevel.xml, log4j2_atLoggerLevel.xml, log4j2_nofilter.xml
>
>
> I am trying to determine if a logger exists for a Marker in Log4j 2. The 
> filter works when actually logging. The problem is when checking 
> isEnabled(level, marker). If the MarkerFilters are at the Configuration 
> level, then it works as expected. If at the logger or appender level, then it 
> bypasses the marker and considers only the threshold level.
> Looking at the documentation, it looks like if accepted/denied is at the 
> configuration level, then it will not check any other filters and that status 
> will be honored, so that makes sense that it works here.
> Is this the expected behavior that the isEnabled works only at the 
> configuration level and is not expected to represent whether or not a message 
> will be logged? Or is it that if isEnabled returns true, then the message 
> should be logged?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to