/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author lxf
*/
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
//import org.apache.log4j.PropertyConfigurator;
public class TestLog4j {
static Logger logger = Logger.getLogger("mylog");
static int numOfThreads = 20;
static long numOfMessages = 20000;
static StringBuilder dumbmsg;
public static void main (String[] args)
throws InterruptedException{
//PropertyConfigurator.configure(args[0]);
//logger.info("Hello World!");
dumbmsg = buildMesg();
if(args.length > 0){
numOfThreads = Integer.parseInt(args[0]);
}
if(args.length > 1){
numOfMessages = Long.parseLong(args[1]);
}
System.out.println( "log4j test starts." );
System.out.println( "Number of Threads: " + numOfThreads );
System.out.println( "Total number of Messages: " + numOfMessages );
long begin = System.currentTimeMillis();
Thread t[] = new Thread[numOfThreads];
for ( int i=0; i<numOfThreads; i++) {
t[i] = new Thread(new LogWorker());
t[i].start();
}
// here you can test forced shutdown before other threads finish to
// see if the behavior of RW locks in Category.java is correct.
//Thread.sleep(200);
//LogManager.shutdown();
for ( int i = 0; i<numOfThreads; i++) {
t[i].join();
}
long end = System.currentTimeMillis();
System.out.println("\nTest completed. Took " + (end - begin) + " millsecs.");
LogManager.shutdown();
}
private static class LogWorker implements Runnable {
public void run() {
String msg = "\nHello, I am " + Thread.currentThread().getName() + ".\n";
//msg += dumbmsg;
for( int i = 0; i < numOfMessages/numOfThreads ; i++){
logger.info(dumbmsg);
logger.info(msg);
/*
try {
Thread.sleep(10);
} catch (InterruptedException ie) {
System.err.println("Interrupted");
break;
}
*/
}
}
}
private static StringBuilder buildMesg() {
BufferedReader br = null;
StringBuilder sb = new StringBuilder(32768);
sb.append('\n');
try {
String s;
br = new BufferedReader(new FileReader("dumbmsg.txt"));
while ((s = br.readLine()) != null) {
sb.append(s).append('\n');
}
} catch (IOException e) {
e.printStackTrace();
System.exit(1);
} finally {
try {
if (br != null)br.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
return sb;
}
}