package com.vip.saturn.job.shell; import org.apache.commons.exec.LogOutputStream; import com.vip.saturn.job.utils.LRUList; /** * 封装子进程的输出信息 * * @author linzhaoming * */ public class ProcessOutputStream extends LogOutputStream { private static final int MAX_LINE = 100; /** 保存最近运行的100条记录 */ //private LRUMap map = new LRUMap(MAX_LINE); LRUList<String> lruList = new LRUList<>(MAX_LINE); Object lock = new Object(); public ProcessOutputStream(final int level) { super(level); } @Override protected void processLine(final String line, final int level) { synchronized(lock){ lruList.put(line); } } /** * @return 获取运行作业的日志 */ public String getJobLog() { StringBuilder sb = new StringBuilder(); synchronized(lock){ for (String line: lruList) { sb.append(line).append(System.lineSeparator()); } } return sb.toString(); } }