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

交友莫独酒,茅台西凤游。
口干古井贡,心徜洋河流。
称多情杜康,趟无量双沟。
赞中华巍巍,无此不销愁。

常用链接

留言簿(68)

随笔分类(136)

随笔档案(122)

最新随笔

搜索

  •  

积分与排名

  • 积分 - 520603
  • 排名 - 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=%%p [%c] - %m%n

posted on 2007-01-03 15:01 交口称赞 阅读(2719) 评论(0)  编辑  收藏 所属分类: java相关

只有注册用户登录后才能发表评论。


网站导航: