The version of Apache log4j used by SoundHelix.
Clone
HTTPS:
git clone https://vervis.peers.community/repos/aEp6o
SSH:
git clone USERNAME@vervis.peers.community:aEp6o
Branches
Tags
- 1.3alpha-7
- CHAINSAW_2_SANDBOX_MERGE
- CORE_VERSION
- LEVEL_REPLACES_PRIORITY
- PREALPHA_1_3_AS_OF_2004_05_12
- PRE_CHAINSAW_MODEL_CONVERSION
- PRE_UGLI_MOVE
- TAG_CHAINSAW2_MOVE
- log4j-1.2.17
- log4j-1.2.17-rc1
- v1.3alpha8
- v1.3alpha8-temp
- v1_2_1
- v1_2_10-recalled
- v1_2_11
- v1_2_11_rc1
- v1_2_11rc3
- v1_2_12
- v1_2_12_rc1
- v1_2_12_rc2
- v1_2_12_rc3
- v1_2_12_rc4
- v1_2_12_rc5
- v1_2_12_rc6
- v1_2_13
- v1_2_13_rc1
- v1_2_13_rc2
- v1_2_13_site_update
- v1_2_14
- v1_2_14_maven
- v1_2_14_rc1
- v1_2_14_site_update
- v1_2_15
- v1_2_15_rc1
- v1_2_15_rc2
- v1_2_15_rc3
- v1_2_15_rc4
- v1_2_15_rc5
- v1_2_15_rc6
- v1_2_16
- v1_2_16_rc1
- v1_2_16_rc2
- v1_2_17
- v1_2_17-rc1
- v1_2_17_rc1
- v1_2_17_rc2
- v1_2_17_rc3
- v1_2_2
- v1_2_3
- v1_2_4
- v1_2_6
- v1_2_7
- v1_2_9
- v1_2_alpha0
- v1_2_alpha7
- v1_2beta1
- v1_2final
- v1_3alpha_1
- v1_3alpha_6
- v_1_0
- v_1_0_1
- v_1_0_4
- v_1_1
- v_1_1_1
- v_1_1_2
- v_1_1_3
- v_1_1_b1
- v_1_1b2
- v_1_1b3
- v_1_1b5
- v_1_1b6
- v_1_1b7
- v_1_2beta3
NotLogging.java
// Copyright 1996-2000, International Business Machines
// Corporation. All Rights Reserved.
package org.apache.log4j.performance;
import org.apache.log4j.Category;
import org.apache.log4j.SimpleLayout;
import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.Level;
/**
Measure the performance of evaluating whether to log or not to log,
but not actually logging.
<p>This program takes two arguments, a string which should be
"true" for testing shipped code performance and "false" for testing
debug-enabled performance the second argument is the run length of
the measurement loops.
<p>The results of the measurement (should) show that
<ul>
<p>
<li>Category evaluation is independent of the length of the category name.
<p>
<li>As expected, using the {@link Category#isDebugEnabled
isDebugEnabled} and {@link Category#isInfoEnabled isInfoEnabled}
methods eliminates the overhead of message argument construction.
<p> <li>Message argument construction can be an important slowing
factor while evaluating whether to log or not.
</ul>
@author Ceki Gülcü
*/
public class NotLogging {
static int runLength;
final static int INITIAL_HASH_SIZE = 101;
static String SHORT_MSG = "Hello World";
static Category SHORT_CAT = Category.getInstance("A0123456789");
static Category MEDIUM_CAT= Category.getInstance("A0123456789.B0123456789");
static Category LONG_CAT =
Category.getInstance("A0123456789.B0123456789.C0123456789");
static Category INEXISTENT_SHORT_CAT = Category.getInstance("I0123456789");
static Category INEXISTENT_MEDIUM_CAT=
Category.getInstance("I0123456789.B0123456789");
static Category INEXISTENT_LONG_CAT=
Category.getInstance("I0123456789.B0123456789.C0123456789");
static Category[] CAT_ARRAY = new Category[] {SHORT_CAT, MEDIUM_CAT,
LONG_CAT, INEXISTENT_SHORT_CAT,
INEXISTENT_MEDIUM_CAT,
INEXISTENT_LONG_CAT};
static
void Usage() {
System.err.println(
"Usage: java org.apache.log4j.test.NotLogging true|false runLength\n" +
"true indicates shipped code, false indicates code in development" +
" where runLength is an int representing the run length of loops\n"+
"We suggest that runLength be at least 100'000.");
System.exit(1);
}
public static void main(String argv[]) {
if(argv.length != 2) {
Usage();
}
ProgramInit(argv);
double delta;
System.out.println();
for(int i = 0; i < CAT_ARRAY.length; i++) {
delta = SimpleMessage(CAT_ARRAY[i], SHORT_MSG, runLength);
System.out.println("Simple argument, " + delta
+ " micros. Cat: " + CAT_ARRAY[i].getName());
}
System.out.println();
for(int i = 0; i < CAT_ARRAY.length; i++) {
delta = FullyOptimizedComplexMessage(CAT_ARRAY[i], runLength);
System.out.println("Fully optimized complex, " + delta +
" micros. Cat: " + CAT_ARRAY[i].getName());
}
System.out.println();
for(int i = 0; i < CAT_ARRAY.length; i++) {
delta = ComplexMessage(CAT_ARRAY[i], runLength);
System.out.println("Complex message argument, " + delta +
" micros. Cat: " + CAT_ARRAY[i].getName());
}
}
/**
Program wide initialization method. */
static
void ProgramInit(String[] args) {
try {
runLength = Integer.parseInt(args[1]);
}
catch(java.lang.NumberFormatException e) {
System.err.println(e);
Usage();
}
ConsoleAppender appender = new ConsoleAppender(new SimpleLayout());
if("false".equals(args[0])) {
// nothing to do
} else if ("true".equals(args[0])) {
System.out.println("Flagging as shipped code.");
Category.getDefaultHierarchy().setThreshold((Level) Level.WARN);
} else
Usage();
SHORT_CAT.setLevel((Level) Level.INFO);
Category.getRoot().setLevel((Level) Level.INFO);
}
static
double SimpleMessage(Category category, String msg, long runLength) {
long before = System.currentTimeMillis();
for(int i = 0; i < runLength; i++) {
category.debug(msg);
}
return (System.currentTimeMillis() - before)*1000.0/runLength;
}
static
double FullyOptimizedComplexMessage(Category category, long runLength) {
long before = System.currentTimeMillis();
for(int i = 0; i < runLength; i++) {
if(category.isDebugEnabled())
category.debug("Message" + i +
" bottles of beer standing on the wall.");
}
return (System.currentTimeMillis() - before)*1000.0/runLength;
}
static
double ComplexMessage(Category category, long runLength) {
long before = System.currentTimeMillis();
for(int i = 0; i < runLength; i++) {
category.debug("Message" + i +
" bottles of beer standing on the wall.");
}
return (System.currentTimeMillis() - before)*1000.0/runLength;
}
}