隨筆 - 119  文章 - 3173  trackbacks - 0
          <2007年1月>
          31123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          交友莫獨酒,茅臺西鳳游。
          口干古井貢,心徜洋河流。
          稱多情杜康,趟無量雙溝。
          贊中華巍巍,無此不銷愁。

          常用鏈接

          留言簿(68)

          隨筆分類(136)

          隨筆檔案(122)

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 525587
          • 排名 - 93

          最新評論

          平時開發時我們能很方便的在eclipse中看到控制圖輸出信息.一旦程序獨立運行,我們就很難看到這些信息了.尤其是有時候我們程序對LOG4J使用不規范,開發中隨意用System.out.println();輸出程序運行信息.

          反正是總有人因為某些原因要捕獲控制臺輸入........(比如偶^_^)


          對于普通的java程序包括swt程序,我們可以把控制臺輸出重定向到文本文件或者界面文本框.


          ?1?????class?ConsoleThread?extends?Thread?{
          ?2?????????private?PipedInputStream?pis?=?new?PipedInputStream();
          ?3?
          ?4?????????private?PipedOutputStream?pos;
          ?5?
          ?6?????????private?BufferedReader?reader?=?new?BufferedReader(new?InputStreamReader(pis));
          ?7?
          ?8?????????private?boolean?run?=?true;
          ?9?
          10?????????public?ConsoleThread()?throws?IOException?{
          11?????????????pos?=?new?PipedOutputStream(pis);
          12?????????}
          13?
          14?????????public?PipedOutputStream?getOut()?{
          15?????????????return?pos;
          16?????????}
          17?
          18?????????public?void?run()?{
          19?????????????String?line?=?null;
          20?????????????while?(run)?{
          21?????????????????try?{
          22?????????????????????line?=?reader.readLine();
          23?????????????????}?catch?(IOException?ioe)?{
          24?????????????????????break;
          25?????????????????}
          26?????????????????if?(line?==?null)?{
          27?????????????????????break;
          28?????????????????}?else?{
          29?????????????????????addText(line);//這里處理截獲的控制臺輸出
          30?????????????????}
          31?????????????}
          32?????????}
          33?
          34?????????public?boolean?isRun()?{
          35?????????????return?run;
          36?????????}
          37?
          38?????????public?void?setRun(boolean?run)?{
          39?????????????this.run?=?run;
          40?????????}
          41?????}


          調用:
          1?try?{
          2?????????????ConsoleThread?coThread??=?new?ConsoleThread();
          3?????????????System.setOut(new?PrintStream(coThread.getOut(),?true));
          4?????????????System.setErr(new?PrintStream(coThread.getOut(),?true));
          5?????????????coThread.start();
          6?????????}?catch?(IOException?e)?{
          7?????????????e.printStackTrace();
          8?????????}

          但是有個問題,log4j輸出到控制臺的信息捕獲不到........
          郁悶

          log4j.properties
          1?log4j.rootLogger=DEBUG?,?stdout
          2?
          3?log4j.appender.stdout=org.apache.log4j.ConsoleAppender
          4?log4j.appender.console.Target?=?System.out
          5?log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
          6?log4j.appender.stdout.layout.ConversionPattern=%d?%p?[%c]?-?%m%n

          posted on 2007-01-03 15:01 交口稱贊 閱讀(2733) 評論(0)  編輯  收藏 所屬分類: java相關
          主站蜘蛛池模板: 水城县| 翼城县| 武城县| 西峡县| 安阳县| 乐昌市| 武隆县| 商南县| 潞城市| 扶沟县| 克拉玛依市| 大洼县| 镇坪县| 达日县| 元阳县| 桃园市| 永宁县| 夏邑县| 如东县| 将乐县| 芦山县| 基隆市| 梅州市| 满洲里市| 赤水市| 土默特右旗| 定边县| 铜山县| 拜泉县| 扶风县| 民乐县| 九龙城区| 晋州市| 乐亭县| 长海县| 和田县| 噶尔县| 沐川县| 阿鲁科尔沁旗| 特克斯县| 儋州市|