[ 
https://issues.apache.org/jira/browse/LOG4J2-609?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Bruce Brouwer updated LOG4J2-609:
---------------------------------

    Attachment: LOG4J2-609.unfinished.patch

Here is my second attempt. It's going to require some explanation. It isn't 
finished, but I wanted to get your thoughts. 

# Using just a listener that many configurations shared will not work when they 
each want to log at a different level. The real goal is to make configure (or 
filter) which status logs end up on System.out or System.err or some file. So 
rather than a single registerListener which takes a StatusListener, I have 
added registerSystemOutFilter, registerSystemErrFilter and registerFileFilter. 
This way, each configuration can register its own filter and the StatusLogger 
will look for the least specific filter for the specified target and log at 
that level. 
# Rather than a single fall-back SimpleLogger, there is now a SimpleLogger 
registered for System.out, System.err and each file filter that is registered. 
I don't know if that simplified the code much, but at least the logging 
statements are much closer to a straight pass-through for the majority of cases
# The only thing that is using registerListener now is jmx.StatusLoggerAdmin 
some JmsTests in log4j-core, which I haven't figured out why they are there 
yet. 
# I refactored away StatusConfiguration in favor of 
AbstractStatusLoggingConfiguration so that XmlConfiguration and 
JsonConfiguration can be more consistent in their configuration. The only 
different I saw is that they had seemingly opposite behavior for what "verbose" 
meant, and even if you don't consider it opposite (the terminology I think is 
confusing) they were definitely using different values (true/false vs. 
quiet/verbose). 


> StatusConfiguration doesn't close files
> ---------------------------------------
>
>                 Key: LOG4J2-609
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-609
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.0-rc1
>            Reporter: Bruce Brouwer
>            Assignee: Ralph Goers
>         Attachments: LOG4J2-609.unfinished.patch, log4j2-609.patch
>
>
> {{org.apache.logging.log4j.core.config.status.StatusConfiguration}} allows 
> you to specify a destination such as "out", "err" or a file name. If 
> specifying a file, that file stream is used when creating a 
> {{StatusConsoleListener}} that is added to the {{StatusLogger}}. Those 
> {{StatusLogger}} listeners are never cleaned up when, for example, the 
> {{XmlConfiguration}} is reconfigured or when the {{LoggerContext}} is shut 
> down (e.g. in {{InitialLoggerContext.apply()}}). This leaves open file 
> handles and is the source of the failing test {{FileOutputTest}} on Windows. 



--
This message was sent by Atlassian JIRA
(v6.2#6252)

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org
For additional commands, e-mail: log4j-dev-h...@logging.apache.org

Reply via email to