posts - 31,  comments - 31,  trackbacks - 0
                 這幾天做項(xiàng)目,需要做一個(gè)類似于控制臺(tái)的界面,可以將日志回顯到一個(gè)文本區(qū)域里,幾經(jīng)查找,反復(fù)測(cè)試寫了以下測(cè)試代碼。
          這是log4j.properties的配置內(nèi)容
              log4j.rootCategory= ,WriterAppender

          log4j.appender.WriterAppender
          =org.apache.log4j.WriterAppender
          log4j.appender.WriterAppender.Threshold
          =debug
          log4j.appender.WriterAppender.layout
          =org.apache.log4j.PatternLayout
          log4j.appender.WriterAppender.layout.ConversionPattern
          =%d{ISO8601} - %- %m%n
          主程序
          import java.io.PipedReader;
          import java.io.PipedWriter;
          import java.io.Writer;

          import org.apache.log4j.Appender;
          import org.apache.log4j.Logger;
          import org.apache.log4j.WriterAppender;

          public class Log4jMain {
              
          static public Logger logger = Logger.getLogger(Log4jMain.class);

              
          public static void main(String[] arg) {
                  
                  
                  Logger root 
          = Logger.getRootLogger();
                  
          try {
                      Appender appender 
          = root.getAppender("WriterAppender");
                      PipedReader reader 
          = new PipedReader();
                      Writer writer 
          = new PipedWriter( reader) ;
                  
                      ((WriterAppender) appender).setWriter(writer);
                      
                      Thread t 
          = new AaaThread(reader);
                      t.start();
                      Logger logger 
          = Logger.getLogger(Log4jMain.class);
                      logger.error(
          "asdf");
                      logger.info(
          "asdf");
                      logger.debug(
          "asdf");
                      logger.fatal(
          "asdf");
                          //hh是一個(gè)class,test方法里只有幾個(gè)logger.info("aaa"),用于測(cè)試用,這東西可以去掉
                      
          new HH().test();

                  }
           catch (Exception e) {
                  }


              }

              
          }
          因?yàn)閘og4j提供的是 Writer,所以通過(guò)使用PipedWriter連接到PipedReader,并通過(guò)一個(gè)thread來(lái)處理PipedReader的數(shù)據(jù)就可以回顯了。如果你需要的話可以將下面的System.out.println(scanner.nextLine());改成你需要顯示的地方就行了。
          import java.io.PipedReader;
          import java.util.Scanner;

          public class AaaThread extends Thread {
              PipedReader reader;

              
          public AaaThread(PipedReader reader) {
                  
          this.reader = reader;
              }


              
          public void run() {
                  Scanner scanner 
          = new Scanner(reader);
                  
          while (scanner.hasNext()) {
                      System.out.println(scanner.nextLine());
                  }

              }

          }
          posted @ 2008-06-06 09:31 小平 閱讀(1226) | 評(píng)論 (0)編輯 收藏
          <2008年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          framework

          j2me

          java

          linux

          web

          其他

          友情鏈接

          素材

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 安远县| 紫阳县| 安平县| 团风县| 上杭县| 陇川县| 新乡市| 临西县| 昌乐县| 平和县| 仪陇县| 福泉市| 桂阳县| 龙南县| 阳曲县| 宕昌县| 宜城市| 民权县| 长泰县| 黔东| 满城县| 凤冈县| 昆山市| 贡觉县| 苏州市| 盈江县| 根河市| 绵竹市| 呼和浩特市| 万安县| 万盛区| 辽中县| 广安市| 互助| 阳新县| 娱乐| 富锦市| 长泰县| 滕州市| 淮北市| 泊头市|