Piotr Kubowicz created DIRSERVER-1804:
-----------------------------------------

             Summary: [patch] Fix ApacheDS code to allow control and reduce 
number of outputted logs
                 Key: DIRSERVER-1804
                 URL: https://issues.apache.org/jira/browse/DIRSERVER-1804
             Project: Directory ApacheDS
          Issue Type: Bug
    Affects Versions: 2.0.0-M10
            Reporter: Piotr Kubowicz


I am using Maven artifact apacheds-all version 2.0.0-M10 
(http://mvnrepository.com/artifact/org.apache.directory.server/apacheds-all/2.0.0-M10).

I want to start and stop the server from my Java code (in a way similar to the 
one described in the official 'embedded sample': 
http://svn.apache.org/repos/asf/directory/documentation/samples/trunk/embedded-sample/src/main/java/org/apache/directory/seserver/EmbeddedADSVer157.java).

The problem is: ApacheDS start takes 7 minutes and recuces to 3 seconds when 
standard output is redirected to /dev/null. Reason: you make lots of 
debug-level logging which take 99.9% of the startup time.

I would like to restrict logging from ApacheDS to ERROR level. However, it is 
not possible because of the flawed ApacheDS code.

You use SLF4J loggers this way:
private static final Logger LOG = LoggerFactory.getLogger( 
JdbmIndex.class.getSimpleName() );

This is absolutely *unacceptable*. The result of this code that the logger 
would be created for name 'JdbmIndex' and there is no way to use logger 
inheritance to control all logging from ApacheDS code, without affecting my own 
code. I don't want to look through ApacheDS code, find classes that fail to use 
logging correctly and silence each of these classes one by one in my own 
logging configuration.

The correct way for using logging in Java is to use:
private static final Logger LOG = LoggerFactory.getLogger( JdbmIndex.class );

Then the logger would be created for name 
'org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmIndex' and I 
would be able to silence the whole 'org.apache.directory' or just 
'org.apache.directory.server.core.partition' - or any part I like.

----

I created a patch based on the today version of trunk. It introduces a single 
correct way of creating loggers across all ApacheDS code. I have also updated 
your logging configuration in log4j.properties to make sure the application 
behaviour won't change after my fixes.


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to