锁定老帖子 主题:log4j屏蔽system.out的方法
精华帖 (0) :: 良好帖 (0) :: 新手帖 (17) :: 隐藏帖 (4)
|
|
---|---|
作者 | 正文 |
发表时间:2010-04-09
最后修改:2010-04-09
codeutil 写道 public static void setStdoutWithLogger(String logName)
{ System.setOut(new LoggerPrintStream(logName)); } class LoggerPrintStream extends PrintStream{ Logger logger; public LoggerPrintStream(String logName) { super(new ByteArrayOutputStream(0)); logger = Logger.getLogger(logName); if( logger == null) throw new RuntimeException("Can't logger:"+pLoggerName); } public void println(String s) { log(s,level); } ///其它它代码略....... } 核心代码 :System.setOut(new LoggerPrintStream(logName)); |
|
返回顶楼 | |
发表时间:2010-04-09
e.printStackTrace不过是打到stderr了。 System.setOut(new LoggerPrintStream(pLoggerName)); System.setErr(new LoggerPrintStream(pLoggerName)); asialee 写道 codeutil 写道 public static void setStdoutWithLogger(String logName)
{ System.setOut(new LoggerPrintStream(logName)); } class LoggerPrintStream extends PrintStream{ Logger logger; public LoggerPrintStream(String logName) { super(new ByteArrayOutputStream(0)); logger = Logger.getLogger(logName); if( logger == null) throw new RuntimeException("Can't logger:"+pLoggerName); } public void println(String s) { log(s,level); } ///其它它代码略....... } 这个不错,我们就这么用了,关键有时候不是System.out,就是e.printStackTrace()生成的日志特别乱。 这样就是相当于重定向。 |
|
返回顶楼 | |
发表时间:2010-04-09
用IDE全局搜索下项目
|
|
返回顶楼 | |
发表时间:2010-04-09
谢谢回复的各位!
|
|
返回顶楼 | |
发表时间:2010-04-09
学到了,没想到有这种方法的:
System.setOut(……); System.setErr(……); |
|
返回顶楼 | |
发表时间:2010-04-09
自己写一个outputstream,里面用log4j实现,启动的时候用
System.out = xxxx; 可以么 |
|
返回顶楼 | |
发表时间:2010-04-09
根本就应该禁止写System.out,写了就让他删掉。
没事研究这技巧,真是闲的。 |
|
返回顶楼 | |
发表时间:2010-04-10
congdepeng 写道 codeutil 写道 public static void setStdoutWithLogger(String logName)
{ System.setOut(new LoggerPrintStream(logName)); } class LoggerPrintStream extends PrintStream{ Logger logger; public LoggerPrintStream(String logName) { super(new ByteArrayOutputStream(0)); logger = Logger.getLogger(logName); if( logger == null) throw new RuntimeException("Can't logger:"+pLoggerName); } public void println(String s) { log(s,level); } ///其它它代码略....... } 核心代码 :System.setOut(new LoggerPrintStream(logName)); 正解,就是将系统标准输出流重定向到log4j的输出流中就可以完成。 |
|
返回顶楼 | |
发表时间:2010-04-11
提一句
要是想在代码里把System.out替换成LOG4J之类的 LOG4E插件有这功能 |
|
返回顶楼 | |
发表时间:2010-04-11
有没有办法直接把日志输出到一个HTML的页面里去,可访问的
|
|
返回顶楼 | |