[
https://issues.apache.org/jira/browse/LUCENE-3598?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13158229#comment-13158229
]
Robert Muir commented on LUCENE-3598:
-------------------------------------
My problem is this isn't logging but debugging. And since we are a library, we
don't need to enforce logging on anyone.
Otherwise we have to deal with overcomplicated logging frameworks, and people
will start opening issues about what is/isn't logged.
I don't think lucene should be responsible for logging, we should just leave
that to the users to implement their own logging.
Infostream is just an internal thing for debugging and testing, and we already
have it hooked nicely into the tests now
(note: since fixing this stuff I removed all the if (VERBOSE) setInfoStream...
across tons of tests and added
-Dtests.infostream to control it across the board, set automatically by
tests.verbose but can be controlled separately)
But this being said, I am for uwe's improvement because it makes it possible
for someone to turn on/off infostream "live" themselves,
without taking any performance hit from the calculations if they have it
disabled, and they are responsible for their own
implementation (if they want to make stuff volatile or synced, good for them).
The complexity is all out of indexwriter's
classes to manage this "liveness", and that was the whole reason for
s/printstream/infostream/ in the first place.
> Improve InfoStream class in trunk to be more consistent with
> logging-frameworks like slf4j/log4j/commons-logging
> ----------------------------------------------------------------------------------------------------------------
>
> Key: LUCENE-3598
> URL: https://issues.apache.org/jira/browse/LUCENE-3598
> Project: Lucene - Java
> Issue Type: Improvement
> Components: core/index
> Affects Versions: 4.0
> Reporter: Uwe Schindler
> Attachments: LUCENE-3598.patch, LUCENE-3598.patch, LUCENE-3598.patch,
> LUCENE-3598.patch
>
>
> Followup on a [thread by Shai Erea on
> java-dev@lao|http://lucene.472066.n3.nabble.com/IndexWriter-infoStream-is-final-td3537485.html]:
> I already discussed with Robert about that, that there is one thing missing.
> Currently the IW only checks if the infoStream!=null and then passes the
> message to the method, and that *may* ignore it. For your requirement it is
> the case that this is enabled or disabled dynamically. Unfortunately if the
> construction of the message is heavy, then this wastes resources.
> I would like to add another method to this class: abstract boolean
> isEnabled() that can also be implemented. I would then replace all null
> checks in IW by this method. The default config in IW would be changed to use
> a NoOutputInfoStream that returns false here and ignores the message.
> A simple logger wrapper for e.g. log4j / slf4j then could look like (ignoring
> component, could be enabled):
> {code:java}
> Loger log = YourLoggingFramework.getLogger(IndexWriter.class);
> public void message(String component, String message) {
> log.debug(component + ": " + message);
> }
> public boolean isEnabled(String component) {
> return log.isDebugEnabled();
> }
> {code}
> Using this you could enable/disable logging live by e.g. the log4j management
> console of your app server by enabling/disabling IndexWriter.class logging.
> The changes are really simple:
> - PrintStreamInfoStream returns true, always, mabye make it dynamically
> enable/disable to allow Shai's request
> - infoStream.getDefault() is never null and can never be set to null. Instead
> the default is a singleton NoOutputInfoStream that returns false of
> isEnabled(component).
> - All null checks on infoStream should be replaced by
> infoStream.isEanbled(component), this is possible as always != null. There
> are no slowdowns by this - it's like Collections.emptyList() instead stupid
> null checks.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]