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
年终总结——2011年XXX支行.doc
考研英语1980——2011年32年真题与答案精解
年终总结——2011年XXX支行(1).doc
中国矿业大学信电学院历年考研电路真题1998——2011年
VC代码 对话条——属性 (实用代码源)VC代码 对话条——属性 (实用代码源)VC代码 对话条——属性 (实用代码源)VC代码 对话条——属性 (实用代码源)VC代码 对话条——属性 (实用代码源)VC代码 对话条——属性 (实用...
——2011年度语文教学工作总结.doc
农业行业:收获养殖,布局饲料、疫苗、水产品——2011年中期投资策略.pdf
2. 2011 年 1 月 21 日——2011 年 2 月 22 日:温习单片机编程理论知识 3. 2011 年 2 月 23 日——2011 年 3 月 12 日:温习 Protel DXP 基础理论 4. 2011 年 3 月 13 日——2011 年 3 月 19 日:购买电子元件 5. ...
robotic导航————————————————————————————
寻找质数——————————————————
first test——————————
XSS测试代码 安全测试 XSS测试代码大全
代码 基于遗传算法的优化计算——建模自变量降维代码代码 基于遗传算法的优化计算——建模自变量降维代码代码 基于遗传算法的优化计算——建模自变量降维代码代码 基于遗传算法的优化计算——建模自变量降维代码代码...
react pro——————————
信息网源代码——懂点技术的可二次开发VIP商业版信息网源代码——懂点技术的可二次开发VIP商业版信息网源代码——懂点技术的可二次开发VIP商业版信息网源代码——懂点技术的可二次开发VIP商业版信息网源代码——懂点...
北邮——计算机——数学建模——专业选修 北邮——计算机——数学建模——专业选修 北邮——计算机——数学建模——专业选修 北邮——计算机——数学建模——专业选修 北邮——计算机——数学建模——专业选修 北邮...
Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码...
代码能有多难?——简单的网页代码书