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

Uwe Schindler commented on SOLR-3358:
-------------------------------------

Hi,

I strongly agree here with Robert, one thing to add: Maven (sorry) has the 
notion of "runtime", "test" and "compile" (and even "test-compile") classpaths, 
which may all be different. Log4J is not the only problem that we have on that, 
since the upgrade to Jetty 8 we have a *serious* flaw here, too: I just repeat 
that on every issue because it seems nobody takes care or maybe nobody 
understands the problem: The Solr webapp / Solr core should be compatible with 
a lot of servlet containers. All on-the-market stable servlet containers are 
build on servlet-api 2.4 or 2.5. For compiling Solr-webapp, this API is enough 
and we *must* test and compile *against* and *only against* servlet-api-2.4 
(like we did with Java 5 in LuSolr 3.x). If we then run tests with Jetty 8, we 
must of course plug in the Jetty-provided servlet-api (which is 3.0), but for 
compile we *must* use the *generic _original_* servlet-api-2.4 interfaces JAR 
file from Sun Microsystems (not a Jetty or Tomcat fake).

For compiling Solr *Core*, we should only have the slf4j-api.jar file in 
classpath, no impls or delegators! No log4j, no commons-logging. To compile 
those "extra addons loaded by reflection", we can use a separate compilation 
unit only containing the appender/listerners for various logging systems 
compiled solely against its own oficially provided JAR file (not e.g. 
log4j-over-sfl4j.jar, whcih is a fake like mentioned above).

My proposal:

- We should separate the lib folder to handle compile time-only references and 
runtime/tests execution. The runtime classpatch is also packaged into WAR file.
- As Robert suggests: More clear separation into modules, so Solr core does not 
need jetty/servlet classes to compile or even run!
- Only use *original* interface JARs on the minimum required version (servlet 
2.4), from the official provider (servlet-api 2.4 from Sun Microsystems, log4j 
from Apache,...) while _compiling_ (like using Java 5 rt.jar in Lucene 3.x), to 
ensure compatibility with public APIs.
                
> Capture Logging Events from JUL and Log4j
> -----------------------------------------
>
>                 Key: SOLR-3358
>                 URL: https://issues.apache.org/jira/browse/SOLR-3358
>             Project: Solr
>          Issue Type: New Feature
>            Reporter: Ryan McKinley
>            Assignee: Ryan McKinley
>         Attachments: SOLR-3358-compile-path.patch, SOLR-3358-logging.patch, 
> SOLR-3358-logging.patch
>
>
> The UI should be able to show the last few log messages.  To support this, we 
> will need to register an Appender (log4j) or Handler
> (JUL) and keep a buffer of recent log events.

--
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: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to