LogDefault.java 2.25 KB
package com.yanzuoguang.util.log;

import com.yanzuoguang.util.exception.ExceptionHelper;
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());

        if (info.isError()) {
            Throwable ex = info.getException();
            if (ex != null) {
                sb.append(ex.getClass().getName());
                sb.append(ex.getMessage());
            }
            System.err.println(sb);
        } else {
            System.out.println(sb);
        }

        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");
        }
    }
}