package me.test;
import java.sql.SQLException;
import org.joda.time.Period;
import org.joda.time.format.PeriodFormatter;
import org.joda.time.format.PeriodFormatterBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LogbackMain {
private static Logger logger = LoggerFactory.getLogger(LogbackMain.class);
private final static PeriodFormatter fmt = new PeriodFormatterBuilder()
.printZeroAlways()
.appendHours()
.appendSeparator(":")
.appendMinutes()
.appendSeparator(":")
.appendSeconds()
.appendSeparator(".")
.appendMillis3Digit()
.toFormatter();
public static void main(String[] args) throws SQLException,
ClassNotFoundException {
final long beginTime = System.currentTimeMillis();
for (int i = 0; i < 10; i++) {
Worker worker = new Worker();
worker.name = "me.test.worker_" + i;
worker.count = 1000;
worker.inteval = 0;
new Thread(worker).start();
// delay to start a new Thread
// or, SLF4J: http://www.slf4j.org/codes.html#substituteLogger
// try {
// Thread.sleep(400);
// } catch (InterruptedException e) {
// throw new RuntimeException(e);
// }
}
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
long endTime = System.currentTimeMillis();
System.out.println("main : "
+ fmt.print(new Period(endTime - beginTime)));
}
});
}
private static class Worker implements Runnable {
private String name;
private int count;
// 间隔:毫秒
private long inteval;
public void run() {
Logger logger = LoggerFactory.getLogger(name);
long beginTime = System.currentTimeMillis();
for (int i = 0; i < count; i++) {
logger.error("hi_" + i, new RuntimeException("xxx", new RuntimeException("yyy")));
if (inteval > 0) {
try {
Thread.sleep(inteval);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
long endTime = System.currentTimeMillis();
System.out.println(name + " : "
+ fmt.print(new Period(endTime - beginTime)));
}
}
}