forked from fanruan/design
MoMeak
7 years ago
9 changed files with 108 additions and 90 deletions
@ -1,60 +0,0 @@
|
||||
package com.fr.design.mainframe.loghandler; |
||||
|
||||
import com.fr.general.LogRecordTime; |
||||
import com.fr.stable.StringUtils; |
||||
import org.apache.log4j.Appender; |
||||
import org.apache.log4j.Logger; |
||||
import org.apache.log4j.WriterAppender; |
||||
|
||||
import java.io.PipedReader; |
||||
import java.io.PipedWriter; |
||||
import java.io.Writer; |
||||
import java.util.Date; |
||||
import java.util.Scanner; |
||||
import java.util.logging.Level; |
||||
import java.util.logging.LogRecord; |
||||
|
||||
/** |
||||
* Created by Administrator on 2017/6/2/0002. |
||||
*/ |
||||
public class DesignerLogAppendThread extends Thread{ |
||||
|
||||
PipedReader reader; |
||||
|
||||
public DesignerLogAppendThread() { |
||||
Logger root = Logger.getRootLogger(); |
||||
// 获取子记录器的输出源
|
||||
Appender appender = root.getAppender("design"); |
||||
// 定义一个未连接的输入流管道
|
||||
reader = new PipedReader(); |
||||
// 定义一个已连接的输出流管理,并连接到reader
|
||||
Writer writer = null; |
||||
try { |
||||
writer = new PipedWriter(reader); |
||||
// 设置 appender 输出流
|
||||
((WriterAppender) appender).setWriter(writer); |
||||
} catch (Throwable e) { |
||||
} |
||||
} |
||||
|
||||
public void run() { |
||||
// 不间断地扫描输入流
|
||||
Scanner scanner = new Scanner(reader); |
||||
|
||||
// 将扫描到的字符流打印在屏目
|
||||
while (scanner.hasNext()) { |
||||
try { |
||||
Thread.sleep(100); |
||||
String log = scanner.nextLine(); |
||||
if (StringUtils.isEmpty(log)) { |
||||
return; |
||||
} |
||||
|
||||
LogRecordTime logRecordTime = new LogRecordTime(new Date(),new LogRecord(Level.INFO, log)); |
||||
DesignerLogHandler.getInstance().printRemoteLog(logRecordTime); |
||||
} catch (Throwable e) { |
||||
|
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,42 @@
|
||||
package com.fr.design.mainframe.loghandler; |
||||
|
||||
import org.apache.log4j.AppenderSkeleton; |
||||
import org.apache.log4j.Level; |
||||
import org.apache.log4j.spi.LoggingEvent; |
||||
|
||||
import java.util.Date; |
||||
|
||||
/** |
||||
* Created by Administrator on 2017/7/18 0018. |
||||
*/ |
||||
public class DesignerLogAppender extends AppenderSkeleton { |
||||
|
||||
public DesignerLogAppender() { |
||||
this.layout = new org.apache.log4j.PatternLayout("%d{HH:mm:ss} %t %p [%c] %m%n"); |
||||
} |
||||
|
||||
protected void append(LoggingEvent event) { |
||||
this.subAppend(event); |
||||
} |
||||
|
||||
public boolean requiresLayout() { |
||||
return true; |
||||
} |
||||
|
||||
public synchronized void close() { |
||||
if (this.closed) { |
||||
return; |
||||
} |
||||
this.closed = true; |
||||
|
||||
} |
||||
|
||||
public void subAppend(LoggingEvent event) { |
||||
synchronized (DesignerLogHandler.getInstance()) { |
||||
Level level = event.getLevel(); |
||||
String msg = this.layout.format(event); |
||||
DesignerLogHandler.getInstance().printRemoteLog(msg, level, new Date()); |
||||
} |
||||
} |
||||
} |
||||
|
Loading…
Reference in new issue