package com.zzq.pattern.decorator;
public interface Executor {
public void execute(String msg);
}
package com.zzq.pattern.decorator;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Logger;
public class BufferedLogger {
private static final int SIZE = 100;
private Logger logger = null;
private Map<String, List<String>> map = null;
public BufferedLogger(Logger logger) {
this.logger = logger;
this.map = new HashMap<String, List<String>>();
}
public void fine(String msg) {
process(msg, "fine", new Executor() {
public void execute(String msg) {
logger.fine(msg);
}
});
}
public void info(String msg) {
process(msg, "info", new Executor() {
public void execute(String msg) {
logger.info(msg);
}
});
}
public void severe(String msg) {
process(msg, "severe", new Executor() {
public void execute(String msg) {
logger.severe(msg);
}
});
}
public void warning(String msg) {
process(msg, "warning", new Executor() {
public void execute(String msg) {
logger.warning(msg);
}
});
}
private void process(String msg, String level, Executor executor) {
List<String> buffer = map.get(level);
boolean overflow = checkSize(level);
if (overflow == true) {
for (String content : buffer) {
executor.execute(content);
}
clearBuffer(level);
}
buffer.add(msg);
}
private boolean checkSize(String level) {
List<String> buffer = map.get(level);
if (buffer != null && buffer.size() < SIZE) {
return false;
}
if (buffer == null) {
map.put(level, new ArrayList<String>());
return false;
}
return true;
}
private void clearBuffer(String level) {
List<String> buffer = map.get(level);
if (buffer != null) {
buffer.clear();
}
}
}
分享到:
相关推荐
IDC发布中国电子商务白皮书——2011年中国网购交易额超7800亿元.pdf
2010——2011年园林规划设计.pdf
年终总结——2011年XXX支行.doc
考研英语1980——2011年32年真题与答案精解
数学建模城程序——2011年A题城市表层土壤重金属污染分析
移动互联网——2011年最值得关注的100个应用程序 应用致富密码
年终总结——2011年XXX支行(1).doc
中国矿业大学信电学院历年考研电路真题1998——2011年
高等教育:以学生为中心——2011年英国高等教育白皮书综述.pdf
VC代码 对话条——属性 (实用代码源)VC代码 对话条——属性 (实用代码源)VC代码 对话条——属性 (实用代码源)VC代码 对话条——属性 (实用代码源)VC代码 对话条——属性 (实用代码源)VC代码 对话条——属性 (实用...
——2011年度德育工作总结.doc
英语专业八级1993——2011年历年真题和精解,很全很好的资料
我国PCB工业将进入战略提升期——2011年元旦献词.pdf
编写M代码————课程选择
2010——2011学年工作学习总结.docx
——2011年度语文教学工作总结.doc
六月是我们收获的季节——2011年中考百日誓师会上的讲话.pdf
2010——2011第一学期少先队工作总结.docx
远场GPS同震位移的变形特征分析——以2011年日本东北大地震为例.pdf
手写功能代码JSP——需要抄写 手写功能代码JSP——需要抄写