package com.taobao.tddl.monitor.stat;
import java.util.Date;
import com.taobao.tddl.common.utils.logger.Logger;
/**
* 扩展 Log4j Logger 的统计日志输出类, 唯一的区别是在输出 count/sum/min/max 后增加平均值。
*
* @author changyuan.lh
*/
public class MinMaxAvgLogWriter extends LoggerLogWriter {
public MinMaxAvgLogWriter(Logger statLogger){
super(statLogger);
}
public MinMaxAvgLogWriter(String fieldSeperator, Logger statLogger){
super(fieldSeperator, statLogger);
}
public MinMaxAvgLogWriter(String fieldSeperator, String lineSeperator, Logger statLogger){
super(fieldSeperator, lineSeperator, statLogger);
}
protected StringBuffer format(StringBuffer buf, Object[] fields, Date time, long... values) {
if (values.length < 2) {
throw new IllegalArgumentException("At least given 2 values");
}
String valueAvgStr = "invalid";
final long number = values[1];
final long count = values[0];
if (count != 0) {
final long valueAvg = 100 * number / count;
valueAvgStr = String.valueOf((double) valueAvg / 100);
}
for (Object field : fields) {
buf.append(field).append(fieldSeperator);
}
for (long value : values) {
buf.append(value).append(fieldSeperator);
}
buf.append(valueAvgStr).append(fieldSeperator);
return buf.append(df.format(time)).append(lineSeperator);
}
}