- 浏览: 93996 次
- 性别:
- 来自: 北京
最新评论
-
xindongwei:
你好 能不能给我一份解决这个问题的实例
log4j屏蔽system.out的方法 -
jerryhanwei:
select p.projectname,t.totalTim ...
一个sql的问题 -
yunmanfan:
有个思路,大家看看
select emp.Name,asito ...
一个sql的问题 -
sunlongfei:
为啥大家看了都浏览,不评价下呢。人家总结的很辛苦的
SQL优化34条 -
friendmine:
反编译,然后再编译一下就成了.
log4j屏蔽system.out的方法
现在项目中有些程序中用system.out打印log,我想用log4j配置屏蔽system.out,打印到日志文件中.不想让这些system.out的log打印到控制台中.有没有办法,各位有什么高见?
怪我没说明白,这些System.out是在一个jar包中,我们没有源码.
核心代码 :System.setOut(new LoggerPrintStream(logName));
正解,就是将系统标准输出流重定向到log4j的输出流中就可以完成。
e.printStackTrace不过是打到stderr了。
System.setOut(new LoggerPrintStream(pLoggerName));
System.setErr(new LoggerPrintStream(pLoggerName));
这个不错,我们就这么用了,关键有时候不是System.out,就是e.printStackTrace()生成的日志特别乱。 这样就是相当于重定向。
核心代码 :System.setOut(new LoggerPrintStream(logName));
这个不错,我们就这么用了,关键有时候不是System.out,就是e.printStackTrace()生成的日志特别乱。 这样就是相当于重定向。
评论
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插件有这功能
要是想在代码里把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));
}
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;
可以么
System.out = xxxx;
可以么
14 楼
ccxw1983
2010-04-09
学到了,没想到有这种方法的:
System.setOut(……);
System.setErr(……);
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.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));
}
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好像没法屏的吧
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.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
就可以把日志打印到指定文件中,而不是控制台上
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);
}
///其它它代码略.......
}
{
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.
发表评论
-
hbase0.98安装
2014-03-13 11:33 830hbase0.98的安装 各种蛋疼,各种焦虑。 首 ... -
大数据使用的各种云计算技术整理
2014-03-13 10:26 10031.Hadoop http://hadoop.apache ... -
tomcat配置之一--用户名
2011-11-20 12:33 799<?xml version='1.0' encoding ... -
递归的拆分
2010-12-24 14:50 1014递归转化为非递归有三种基本方法: 一.通过分析,跳过分解过程 ... -
动态规划
2010-12-23 10:07 763基本思想 动态规划算法通常用于求解具有某种最优性质的问题。在 ... -
分配排序
2010-12-22 16:58 726分配排序的基本思想: ... -
堆排序
2010-12-22 16:31 893算法思想:(1)堆的定义:堆是满足下列性质的数列{r1, r2 ... -
归并排序
2010-12-22 13:35 757归并(Merge)排序法是将两个(或两个以上)有序表合并成一个 ... -
贪心算法
2010-12-22 13:31 985贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看 ... -
分治法
2010-12-22 13:27 655分治法的设计思想是, ... -
插入排序
2010-12-22 13:20 682基本思想:每次将一个待排序的记录按照关键吗从小到大的顺序插入前 ... -
冒泡排序
2010-12-13 15:44 795冒泡排序:基本思想: 首先比较第一个和第二个数据,将其中较小的 ... -
自己的整理(一)
2010-11-26 12:58 715create table ASSIGNMENT( ... -
快速排序
2010-11-24 18:32 695快速排序的基本思想:运用分而治之的思想,通过一趟排序将待排序的 ... -
sql常用语句和函数
2010-11-01 09:43 11051.求字持串的长度LENGTH您可用LENGTH函数求字符串的 ... -
一个sql的问题
2010-10-25 16:07 1109现在有三个表 EMPLOYEE (EmpID, Name, ... -
Struts2的手动配置
2010-06-18 16:51 991Struts2的手动配置需要注意以下几点: 1。struct ... -
tomcat手动部署自己整理使用
2010-05-12 14:28 1216tomcat的部署一直使用MyEclipse,近来多是使 ... -
父子类初始化的顺序
2009-06-20 21:32 1025自己测试了一下自己对 ... -
Struts常见异常信息和解决方法
2008-05-26 23:26 929以下所说的struts-config.xml和Applicat ...
相关推荐
在《Log4j将System.out搞到log4j中输出四》这篇博文中,作者可能详细讨论了这些步骤,并可能分享了一些实战经验。通过学习这篇博文,读者可以更深入地了解如何在实际项目中实现这一转换,提升日志管理的效率。 总结...
以上就是关于如何使用Log4j输出Tomcat的catalina.out日志的详细步骤和配置方法。希望这些信息能对使用Tomcat的Java Web开发者和运维人员有所帮助。在实际操作过程中,务必小心谨慎,做好备份,避免因配置错误导致...
4. **启动Tomcat**:重新启动Tomcat,现在`catalina.out`将不再被更新,而是由Log4j根据`logging.properties`和`log4j.properties`的配置进行日志处理。 5. **调整日志级别**:在生产环境中,可能需要调整日志级别...
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`,实现更精细化的日志控制。本文将详细介绍如何在Ubuntu的Tomcat环境中配置Log4j来替代`catalina.out`。 首先,我们需要理解Log4...
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.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 ...
2. **Log4j配置文件(log4j.properties或log4j.xml)** - 在Java项目中,通常会有一个log4j配置文件,用于定义日志记录的级别、输出方式和格式。 - 示例配置: ``` log4j.rootLogger=DEBUG, FILE 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简介 Log4j是由Apache软件基金会开发的一个开源日志组件,主要为Java应用程序提供日志服务。它的设计理念是让日志输出变得...
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.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-api-2.1.jar commons-logging-1.2.jar commons-logging-1.1.1.jar commons-logging-1.0.4.jar
在Tomcat中配置Log4j,可以实现按照文件大小生成日志文件,如`catalina.out`,从而避免单个日志文件过大导致的管理不便。 首先,我们需要理解Log4j的工作原理。Log4j主要包括三个核心组件:Logger(日志器)、...
- **配置Appender属性**:如`log4j.appender.stdout.Target=System.out`,表示将日志输出到控制台。 - **设置Layout**:如`log4j.appender.stdout.layout=org.apache.log4j.PatternLayout`,并定义其模式`log4j....
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.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....
Log4j是一个广泛应用于Java环境的日志框架,而当我们谈论`android-logging-log4j-1.0.3.jar`时,它便是Log4j的一个版本,专门针对Android平台进行优化,使得在Android系统中可以方便地将日志信息写入SD卡。...