From 1aceeba735c8afb2271cf5874742e5fb78bd1f1b Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Mon, 17 Jul 2017 15:42:08 +0800 Subject: [PATCH 1/2] =?UTF-8?q?REPORT-1013=20=E7=94=A8log4j=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E6=97=A5=E5=BF=97.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/DesignerEnvManager.java | 2 +- .../loghandler/DesignerLogAppendThread.java | 60 +++++++++++++++++++ .../loghandler/DesignerLogHandler.java | 24 ++------ .../com/fr/design/module/DesignModule.java | 6 +- 4 files changed, 70 insertions(+), 22 deletions(-) create mode 100644 designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogAppendThread.java diff --git a/designer_base/src/com/fr/design/DesignerEnvManager.java b/designer_base/src/com/fr/design/DesignerEnvManager.java index 536574f9c..d02d41abf 100644 --- a/designer_base/src/com/fr/design/DesignerEnvManager.java +++ b/designer_base/src/com/fr/design/DesignerEnvManager.java @@ -28,7 +28,7 @@ import java.util.List; import java.util.Map.Entry; import java.util.logging.FileHandler; import java.util.logging.Handler; -import java.util.logging.Level; +import org.apache.log4j.Level; /** * The manager of Designer GUI. diff --git a/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogAppendThread.java b/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogAppendThread.java new file mode 100644 index 000000000..0d374bdfe --- /dev/null +++ b/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogAppendThread.java @@ -0,0 +1,60 @@ +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) { + + } + } + } +} diff --git a/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java b/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java index e45ade484..ddf301fd2 100644 --- a/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java +++ b/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java @@ -18,15 +18,14 @@ import java.awt.*; import java.awt.event.*; import java.text.SimpleDateFormat; import java.util.Date; -import java.util.logging.Handler; import java.util.logging.LogRecord; import static com.fr.design.gui.syntax.ui.rtextarea.RTADefaultInputMap.DEFAULT_MODIFIER; public class DesignerLogHandler { - protected static final int INFO_INT = FRLogLevel.INFO.intValue(); - protected static final int ERRO_INT = FRLogLevel.ERROR.intValue(); - protected static final int SERVER_INT = FRLogLevel.SEVERE.intValue(); + protected static final int INFO_INT = FRLogLevel.INFO.toInt(); + protected static final int ERRO_INT = FRLogLevel.ERROR.toInt(); + protected static final int SERVER_INT = FRLogLevel.SEVERE.toInt(); private static final int GAP_X = -150; private static final int INFO_GAP_Y = -60; private static final int ERRO_GAP_Y = -40; @@ -91,7 +90,7 @@ public class DesignerLogHandler { @Override public void actionPerformed(ActionEvent e) { JPopupMenu showsetPopup = new JPopupMenu(); - int logLevelvalue = DesignerEnvManager.getEnvManager().getLogLevel().intValue(); + int logLevelvalue = DesignerEnvManager.getEnvManager().getLogLevel().toInt(); if (logLevelvalue <= INFO_INT) { showsetPopup.add(showInfo); showsetPopup.add(showError); @@ -169,21 +168,6 @@ public class DesignerLogHandler { } } }); - - // 鍐欏埌鏃ュ織闈㈡澘涓婇潰鐨凩og鍜屾棩蹇楀伐鍏锋爮 - FRContext.getLogger().addLogHandler(new Handler() { - public void publish(LogRecord logRecord) { - Date date = new Date(); - LogRecordTime logRecordTime = new LogRecordTime(date, logRecord); - printStackTrace(logRecordTime); - } - - public void flush() { - } - - public void close() { - } - }); } private JTextPane initLogJTextArea() { diff --git a/designer_base/src/com/fr/design/module/DesignModule.java b/designer_base/src/com/fr/design/module/DesignModule.java index f04aa5474..1929452b9 100644 --- a/designer_base/src/com/fr/design/module/DesignModule.java +++ b/designer_base/src/com/fr/design/module/DesignModule.java @@ -12,11 +12,11 @@ import com.fr.design.javascript.JavaScriptImplPane; import com.fr.design.javascript.ParameterJavaScriptPane; import com.fr.design.mainframe.App; import com.fr.design.mainframe.DesignerFrame; +import com.fr.design.mainframe.loghandler.DesignerLogAppendThread; import com.fr.general.Inter; import com.fr.general.ModuleContext; import com.fr.js.*; import com.fr.module.TopModule; -import com.fr.stable.ArrayUtils; import com.fr.stable.bridge.StableFactory; import com.fr.stable.plugin.ExtraDesignClassManagerProvider; @@ -45,6 +45,10 @@ public abstract class DesignModule extends TopModule { ActionFactory.registerCellInsertActionClass(actionsForInsertCellElement()); ActionFactory.registerFloatInsertActionClass(actionsForInsertFloatElement()); DesignModuleFactory.registerCreators4Hyperlink(hyperlinkTypes()); + + // 灏唋og4j鏃ュ織杈撳嚭鍒拌璁″櫒鏃ュ織闈㈡澘鐨勭嚎绋. + DesignerLogAppendThread logTread = new DesignerLogAppendThread(); + logTread.start(); } public boolean isStarted() { From e2790a4cc8ffb16c10998e2b0343c88c4d70ef19 Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Mon, 17 Jul 2017 15:45:51 +0800 Subject: [PATCH 2/2] utf8 --- .../loghandler/DesignerLogAppendThread.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogAppendThread.java b/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogAppendThread.java index 0d374bdfe..12d281627 100644 --- a/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogAppendThread.java +++ b/designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogAppendThread.java @@ -23,25 +23,25 @@ public class DesignerLogAppendThread extends Thread{ public DesignerLogAppendThread() { Logger root = Logger.getRootLogger(); - // 获取子记录器的输出源 + // 鑾峰彇瀛愯褰曞櫒鐨勮緭鍑烘簮 Appender appender = root.getAppender("design"); - // 定义一个未连接的输入流管道 + // 瀹氫箟涓涓湭杩炴帴鐨勮緭鍏ユ祦绠¢亾 reader = new PipedReader(); - // 定义一个已连接的输出流管理,并连接到reader + // 瀹氫箟涓涓凡杩炴帴鐨勮緭鍑烘祦绠$悊锛屽苟杩炴帴鍒皉eader Writer writer = null; try { writer = new PipedWriter(reader); - // 设置 appender 输出流 + // 璁剧疆 appender 杈撳嚭娴 ((WriterAppender) appender).setWriter(writer); } catch (Throwable e) { } } public void run() { - // 不间断地扫描输入流 + // 涓嶉棿鏂湴鎵弿杈撳叆娴 Scanner scanner = new Scanner(reader); - // 将扫描到的字符流打印在屏目 + // 灏嗘壂鎻忓埌鐨勫瓧绗︽祦鎵撳嵃鍦ㄥ睆鐩 while (scanner.hasNext()) { try { Thread.sleep(100);