`
yunmanfan
  • 浏览: 93693 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

log4j屏蔽system.out的方法

阅读更多
现在项目中有些程序中用system.out打印log,我想用log4j配置屏蔽system.out,打印到日志文件中.不想让这些system.out的log打印到控制台中.有没有办法,各位有什么高见?
分享到:
评论
22 楼 xindongwei 2012-05-30  
你好  能不能给我一份解决这个问题的实例
21 楼 friendmine 2010-04-13  
反编译,然后再编译一下就成了.
20 楼 yunmanfan 2010-04-12  
pipilu 写道
根本就应该禁止写System.out,写了就让他删掉。
没事研究这技巧,真是闲的。

怪我没说明白,这些System.out是在一个jar包中,我们没有源码.
19 楼 elvishehai 2010-04-11  
有没有办法直接把日志输出到一个HTML的页面里去,可访问的
18 楼 zhangthe9 2010-04-11  
提一句
要是想在代码里把System.out替换成LOG4J之类的

LOG4E插件有这功能
17 楼 zhxp791008 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的输出流中就可以完成。
16 楼 pipilu 2010-04-09  
根本就应该禁止写System.out,写了就让他删掉。
没事研究这技巧,真是闲的。
15 楼 坏孩子 2010-04-09  
自己写一个outputstream,里面用log4j实现,启动的时候用

System.out = xxxx;

可以么
14 楼 ccxw1983 2010-04-09  
学到了,没想到有这种方法的:
System.setOut(……);
System.setErr(……);
13 楼 yunmanfan 2010-04-09  
谢谢回复的各位!
12 楼 刃之舞 2010-04-09  
用IDE全局搜索下项目
11 楼 codeutil 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()生成的日志特别乱。 这样就是相当于重定向。

10 楼 congdepeng 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));
9 楼 linzy410 2010-04-09  
以下加上注释即可

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[spboss]%d %p [%c] - <%m>%n

程序员写的system.out好像没法屏的吧
8 楼 asialee 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.out,就是e.printStackTrace()生成的日志特别乱。 这样就是相当于重定向。
7 楼 Dollyn 2010-04-09  
据我所知不行,只能让程序员不写system.out
6 楼 aaronluo 2010-04-09  
楼上的方法只是合适rootLogger是控制台输出的方式。而且只需要log4j.additivity.com.xx.xxx=false即可。楼主的意思是想用Log4j来屏蔽在代码中hardcode 的 system.out.println()...暂时坐等高手回复
5 楼 langyu 2010-04-09  
如果你的配置像这样:
log4j.logger.com.xx.xxxx=debug, console2
那么紧接着再配一句:
log4j.additivity.com.xx.xxxx=debug, console2

就可以把日志打印到指定文件中,而不是控制台上



4 楼 codeutil 2010-04-08  
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);
}
///其它它代码略.......
}

3 楼 wumingshi 2010-04-08  
log4j没有现成的功能做这个。如果你要做,一个办法是重定向console的output到一个stream,然后吧stream导入log4j 的appender里面。更简单的办法是search and replace.

相关推荐

    Log4j将System.out搞到log4j中输出四

    在《Log4j将System.out搞到log4j中输出四》这篇博文中,作者可能详细讨论了这些步骤,并可能分享了一些实战经验。通过学习这篇博文,读者可以更深入地了解如何在实际项目中实现这一转换,提升日志管理的效率。 总结...

    Tomcat使用Log4j输出catalina.out日志

    以上就是关于如何使用Log4j输出Tomcat的catalina.out日志的详细步骤和配置方法。希望这些信息能对使用Tomcat的Java Web开发者和运维人员有所帮助。在实际操作过程中,务必小心谨慎,做好备份,避免因配置错误导致...

    Tomcat下使用Log4j 接管 catalina.out 日志文件生成方式

    4. **启动Tomcat**:重新启动Tomcat,现在`catalina.out`将不再被更新,而是由Log4j根据`logging.properties`和`log4j.properties`的配置进行日志处理。 5. **调整日志级别**:在生产环境中,可能需要调整日志级别...

    log4j-1.2.17.jar下载

    log4j.appender.Console.Target=System.out log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n log4j.appender....

    log4j替代catalina.out

    这时,我们可以引入Log4j,一个强大的、高度可配置的日志框架,来替代`catalina.out`,实现更精细化的日志控制。本文将详细介绍如何在Ubuntu的Tomcat环境中配置Log4j来替代`catalina.out`。 首先,我们需要理解Log4...

    log4j-1.2.17.jar及配置文件

    log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n # 定义输出到日志...

    log4j-core.jar包

    log4j-core.jar包,log4j-core.jar包,log4j-core.jar包,log4j-core.jar包,log4j-core.jar包,log4j-core.jar包,log4j-core.jar包,log4j-core.jar包

    Log4j日志包

    log4j.appender.CONSOLE.Target=System.out log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n ...

    log4j与web.xml的配置

    2. **Log4j配置文件(log4j.properties或log4j.xml)** - 在Java项目中,通常会有一个log4j配置文件,用于定义日志记录的级别、输出方式和格式。 - 示例配置: ``` log4j.rootLogger=DEBUG, FILE log4j....

    log4j日志驱动包

    log4j.appender.CONSOLE.Target=System.out log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n #...

    log4j-1.2.15.jar

    本文将详细解析Log4j 1.2.15.jar这个版本的核心概念、使用方法以及重要特性。 一、Log4j简介 Log4j是由Apache软件基金会开发的一个开源日志组件,主要为Java应用程序提供日志服务。它的设计理念是让日志输出变得...

    com.springsource.org.apache.log4j-1.2.16.jar

    log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ``` 2. 日志级别...

    log4j-1.2.9.jar

    log4j.appender.Console.Target=System.out log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n log4j.appender....

    log4j-1.2.14.jar,log4j-core-2.1.jar

    log4j-1.2.14.jar log4j-core-2.1.jar log4j-api-2.1.jar commons-logging-1.2.jar commons-logging-1.1.1.jar commons-logging-1.0.4.jar

    java log4j统一打印在user.dir目录下(windows、linux通用、不用考虑不同操作系统分隔符不一致的情况)

    log4j.appender.CONSOLE.Target=System.out log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n # 设置日志文件的...

    tomcat下用Log4j 按文件大小,生成catalina.out日志文件

    在Tomcat中配置Log4j,可以实现按照文件大小生成日志文件,如`catalina.out`,从而避免单个日志文件过大导致的管理不便。 首先,我们需要理解Log4j的工作原理。Log4j主要包括三个核心组件:Logger(日志器)、...

    log4j.properties(完整版) log4j.properties(精简版)

    - **配置Appender属性**:如`log4j.appender.stdout.Target=System.out`,表示将日志输出到控制台。 - **设置Layout**:如`log4j.appender.stdout.layout=org.apache.log4j.PatternLayout`,并定义其模式`log4j....

    log4j-1.2.17.jar csdn下载

    log4j.appender.Console.Target=System.out log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n log4j....

    android-logging-log4j-1.0.3.jar

    Log4j是一个广泛应用于Java环境的日志框架,而当我们谈论`android-logging-log4j-1.0.3.jar`时,它便是Log4j的一个版本,专门针对Android平台进行优化,使得在Android系统中可以方便地将日志信息写入SD卡。...

Global site tag (gtag.js) - Google Analytics