将System.out.println()打印的内容输出到文件


1.


 

    今天分析了一个项目。认为很有必要将System.out.println()的内容当做日志保存起来.为以后程序运行的分析提供依据.所以经过查找和思考.总结出了以下的方法.
      在windows下,通过重定向方式启动程序.下面是启动文件startup.bat
      java -jarIceColdMonitor.jar >>c:log.txt
但这样做还不够完美,我们希望可以保存到当前项目的相对路径下,同时改一下后缀名(tomcat的日志用的就是*.log),则改成如下:
      java -jarIceColdMonitor.jar >>record.log
      但是这样使用,扔存在个问题,下次程序启动的时候会把先前日志给覆盖,所以我们用日期当作日志的名字.
      java -jarIceColdMonitor.jar>>log%date:~0,10%.log

      好了.这样就可以完美记录日志了.在linux下的使用方式也是一样的,通过重定向来实现该功能.如果想更强大的方式记录日志,则需要通过log4j来实现.^-^



2.System.setOut();

package com;

import java.io.PrintStream;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.apache.commons.logging.impl.LogFactoryImpl;
/**
 * 把在程序中的System.out.print()的信息自动转成日志信息
 */
public class StdoutListener implements ServletContextListener {
    public void contextDestroyed(ServletContextEvent event) {
    }
    private void log(Object info) {
        LogFactoryImpl.getLog(getClass()).info(info);
    }
    public void contextInitialized(ServletContextEvent event) {
        PrintStream printStream = new PrintStream(System.out) {
            public void println(boolean x) {
                log(Boolean.valueOf(x));
            }
            public void println(char x) {
                log(Character.valueOf(x));
            }
            public void println(char[] x) {
                log(x == null ? null : new String(x));
            }
            public void println(double x) {
                log(Double.valueOf(x));
            }
            public void println(float x) {
                log(Float.valueOf(x));
            }
            public void println(int x) {
                log(Integer.valueOf(x));
            }
            public void println(long x) {
                log(x);
            }
            public void println(Object x) {
                log(x);
            }
            public void println(String x) {
                log(x);
            }
        };
        System.setOut(printStream);
        System.setErr(printStream);
    }
}
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Spring Boot 中,可以使用 logback 或者 log4j2 这两个日志框架来处理应用程序的日志输出。这两个框架可以很好地与 Spring Boot 集成,并且可以提供非常灵活的日志配置。 如果你想要使用这些日志框架来输出日志,可以使用框架提供的 Logger 类来输出日志信息,而不是使用 System.out.println。 例如,在使用 logback 框架的情况下,你可以在类中定义一个 Logger 对象,并使用这个 Logger 对象来输出日志信息,例如: ``` import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class MyClass { private static final Logger logger = LoggerFactory.getLogger(MyClass.class); public void myMethod() { logger.info("This is a log message"); } } ``` 这样,当你运行应用程序时,日志信息将会被输出日志文件中。 如果你希望在日志中同时输出 System.out.println 输出内容,可以在日志配置文件中将 System.out 重定向到日志输出流。例如,在 logback.xml 配置文件中添加以下内容: ``` <configuration> <!-- 定义一个名为 STDOUT 的 appender,将 System.out 重定向到日志输出流 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <!-- 将 root logger 指向刚刚定义的 STDOUT appender --> <root level="debug"> <appender-ref ref="STDOUT" /> </root> </configuration> ``` 这样,日志信息和 System.out.println 输出内容都将被输出日志文件中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值