posts - 31,  comments - 31,  trackbacks - 0
                 這幾天做項目,需要做一個類似于控制臺的界面,可以將日志回顯到一個文本區域里,幾經查找,反復測試寫了以下測試代碼。
          這是log4j.properties的配置內容
              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是一個class,test方法里只有幾個logger.info("aaa"),用于測試用,這東西可以去掉
                      
          new HH().test();

                  }
           catch (Exception e) {
                  }


              }

              
          }
          因為log4j提供的是 Writer,所以通過使用PipedWriter連接到PipedReader,并通過一個thread來處理PipedReader的數據就可以回顯了。如果你需要的話可以將下面的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 小平 閱讀(1224) | 評論 (0)編輯 收藏
          <2008年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          framework

          j2me

          java

          linux

          web

          其他

          友情鏈接

          素材

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 阳山县| 陕西省| 安泽县| 长岭县| 河池市| 科尔| 洛川县| 罗城| 疏勒县| 顺平县| 杭锦后旗| 清流县| 常熟市| 观塘区| 永昌县| 湘潭市| 万州区| 梨树县| 芒康县| 南陵县| 萨嘎县| 东至县| 昆明市| 保德县| 兰考县| 沙雅县| 桦甸市| 宁明县| 积石山| 德安县| 随州市| 永顺县| 昭通市| 泸西县| 聂拉木县| 同德县| 弥渡县| 茂名市| 中山市| 高青县| 淮安市|