[
https://issues.apache.org/jira/browse/DIRSERVER-1804?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13579155#comment-13579155
]
Piotr Kubowicz edited comment on DIRSERVER-1804 at 2/15/13 1:09 PM:
--------------------------------------------------------------------
Maybe it would also be good if you move 'dedicated' loggers to a namespace, for
example rename 'ATTRIBUTE_TYPE' to 'org.apache.directory.server.ATTRIBUTE_TYPE'
(or something more nested, like .server.dedicated.ATTRIBUTE_TYPE). This way
those loggers would fit nicely into logger hierarchy, i.e. you would be able to
see enable debug logs everywhere or restrict visible messages only to ERROR
with a single command like:
log4j.logger.org.apache.directory.server=DEBUG
Your code would benefit from making all loggers being part of some hierarchy,
for example ldap-client-test/src/test/resources/log4j.properties might become
something as simple as
log4j.logger.net=FATAL
log4j.logger.org.apache.directory=FATAL
Note that currently you need to modify all your log4j.properties when you
introduce a new 'dedicated' logger. If those were all part of a hierarchy,
adding a new dedicated logger wouldn't require any changes in log4j.properties,
because you would be able to cover all with a parent logger rule.
was (Author: pkubowicz):
Maybe it would also be good if you move 'dedicated' loggers to a namespace,
for example rename 'ATTRIBUTE_TYPE' to
'org.apache.directory.server.ATTRIBUTE_TYPE' (or something more nested, like
.server.dedicated.ATTRIBUTE_TYPE). This way those loggers would fit nicely into
logger hierarchy, i.e. you would be able to see enable debug logs everywhere or
restrict visible messages only to ERROR with a single command like:
log4j.logger.org.apache.directory.server=DEBUG
Your code would benefit from making all loggers being part of some hierarchy,
for example ldap-client-test/src/test/resources/log4j.properties might become
something as simple as
log4j.logger.net=FATAL
log4j.logger.org.apache.directory=FATAL
> [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
> Labels: log4j, log4j-over-slf4j
> Fix For: 2.0.0-M11
>
> Attachments: slf4j-logging.patch
>
>
> 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