[jboss-jira] [JBoss JIRA] Commented: (JGRP-484) Dynamically configure logging at runtime
Bela Ban (JIRA)
jira-events at lists.jboss.org
Fri Apr 27 04:03:30 EDT 2007
[ http://jira.jboss.com/jira/browse/JGRP-484?page=comments#action_12360673 ]
Bela Ban commented on JGRP-484:
-------------------------------
The program below measured that for 1 million log statements (with tracing turned OFF for 'bla'), the overhead of if(log.isTraceEnabled()) compared to if(trace) was 16 ms, so that's negligible.
--------------------------- code ------------------
package org.jgroups.tests;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* @author Bela Ban
* @version $Id$
*/
public class bla {
final static int NUM=1000 * 1000;
public static void main(String[] args) throws Exception {
Log log=LogFactory.getLog(bla.class);
testWithCaching(log);
testWithoutCaching(log);
testWithCaching(log);
testWithoutCaching(log);
}
private static void testWithCaching(Log log) {
long start, stop, diff;
boolean trace=log.isTraceEnabled();
start=System.nanoTime();
for(int i=0; i < NUM; i++) {
if(trace) {
log.trace("testing");
}
}
stop=System.nanoTime();
diff=stop - start;
System.out.println(NUM + " with caching: " + diff + " ns (" + diff / 1000000 + " ms)");
}
private static void testWithoutCaching(Log log) {
long start, stop, diff;
start=System.nanoTime();
for(int i=0; i < NUM; i++) {
if(log.isTraceEnabled()) {
log.trace("testing");
}
}
stop=System.nanoTime();
diff=stop - start;
System.out.println(NUM + " without caching: " + diff + " ns (" + diff / 1000000 + " ms)");
}
}
---------------- output -----------------
1000000 with caching: 4803404 ns (4 ms)
1000000 without caching: 24840308 ns (24 ms)
1000000 with caching: 377981 ns (0 ms)
1000000 without caching: 19888841 ns (19 ms)
> Dynamically configure logging at runtime
> ----------------------------------------
>
> Key: JGRP-484
> URL: http://jira.jboss.com/jira/browse/JGRP-484
> Project: JGroups
> Issue Type: Feature Request
> Reporter: Bela Ban
> Assigned To: Bela Ban
> Priority: Minor
> Fix For: 2.6
>
>
> For performance reasons, JGroups caches log levels as follows:
> boolean trace=log.isTraceEnabled();
> // later:
> if(trace) {
> log.trace(...);
> }
> While caching created a measurable performance increase, it also disabled the ability to change the log levels at runtime (example: JBoss' log4j.xml, which is re-read every 60 secs).
> Investigate how to have both good performance and dynamic runtime configuration of log levels. E.g. signal to enable logging ?
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list