package com.google.jstestdriver.util;
import com.google.common.collect.Lists;
import java.util.List;
public class LogConfigBuilder {
List<String> handlers = Lists.newLinkedList();
List<String> configLines = Lists.newLinkedList();
public LogConfigBuilder useFileHandler() {
handlers.add("java.util.logging.FileHandler");
configLines.add("java.util.logging.FileHandler.pattern=%t/jstd-" +
System.currentTimeMillis() +
".log");
configLines.add("java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter");
configLines.add("java.util.logging.FileHandler.level=ALL");
return this;
}
public LogConfigBuilder useConsoleHandler() {
handlers.add("java.util.logging.ConsoleHandler");
configLines.add("java.util.logging.ConsoleHandler.level=ALL");
return this;
}
public LogConfigBuilder useMemoryHandler(int pushCount) {
handlers.add("java.util.logging.MemoryHandler");
configLines.add("java.util.logging.MemoryHandler.target=java.util.logging.ConsoleHandler");
configLines.add("java.util.logging.MemoryHandler.size=" + pushCount);
return this;
}
public LogConfigBuilder finest(String className) {
configLines.add(className + ".level=FINEST");
return this;
}
public LogConfigBuilder severe(String className) {
configLines.add(className + ".level=SEVERE");
return this;
}
public LogConfigBuilder warn(String className) {
configLines.add(className + ".level=WARNING");
return this;
}
public LogConfigBuilder info(String className) {
configLines.add(className + ".level=INFO");
return this;
}
public LogConfigBuilder fine(String className) {
configLines.add(className + ".level=FINE");
return this;
}
public String build() {
StringBuilder builder = new StringBuilder("handlers=");
String sep = "";
for (String handler : handlers) {
builder.append(sep).append(handler);
sep = ",";
}
builder.append('\n');
for (String line : configLines) {
builder.append(line).append('\n');
}
return builder.toString();
}
}