package com.yanzuoguang.util.log; import com.yanzuoguang.util.helper.DateHelper; import com.yanzuoguang.util.helper.FileHelper; import com.yanzuoguang.util.helper.StringHelper; import com.yanzuoguang.util.vo.MapRow; import java.io.File; /** * 日志处理默认处理函数 * * @author 颜佐光 */ public class LogDefault implements RunnableLog { private static String pathFormat = StringHelper.EMPTY; public static String getPathFormat() { return pathFormat; } public static void setPathFormat(String pathFormat) { LogDefault.pathFormat = pathFormat; } /** * 需要处理的日志 * * @param info 日志列表 */ @Override public void run(LogInfo info) { if (info == null) { return; } Class<?> cls = info.getCls(); String clsName = StringHelper.EMPTY; if (cls != null) { clsName = info.getCls().getSimpleName(); } StringBuilder sb = new StringBuilder(); sb.append("/* "); sb.append(DateHelper.getDateTimeString("HH:mm:ss.SSS", info.getNow())); sb.append(" pid:"); sb.append(info.getThreadId()); sb.append(" t:"); sb.append(info.getTime()); sb.append(" /"); sb.append(info.getTotalTime()); sb.append(" ms "); sb.append(clsName); sb.append(" "); sb.append(info.getTag()); sb.append(" */ "); sb.append(info.getMessage()); Throwable ex = info.getException(); if (ex != null) { sb.append(ex.getClass().getName()); sb.append(ex.getMessage()); sb.append(System.getProperty("line.separator")); System.err.print(sb.toString()); ex.printStackTrace(); } else { sb.append(System.getProperty("line.separator")); System.out.print(sb.toString()); } if (!StringHelper.isEmpty(pathFormat)) { MapRow row = new MapRow(); row.put("day", DateHelper.getToday(info.getNow())); row.put("thread", info.getThreadId()); // 生成路径 String path = StringHelper.getCodeString(pathFormat, row); // 追加到文件 FileHelper.writeFileAppend(new File(path), sb.toString(), "UTF-8"); } } }