繁体   English   中英

在执行 jar 并将其输出重定向到文件时在控制台上打印 System.out.println 语句

[英]Printing System.out.println statements on console while executing the jar and redirecting its output to file

我有一个小的 java 程序,它要求用户输入两个日期。 我想把整个程序打包成一个jar文件。 当我尝试通过命令行执行 jar 文件并将输出重定向到日志文件(像这样: java -jar Sample.jar >> Sample.log )时,所有System.out.println语句和日志语句都打印到外部文件,而不是在控制台上。 即使用户将输出重定向到日志文件,我也希望看到控制台上打印的System.out.println语句和外部文件中的 log4j 日志语句。 请注意,我已将 log4j 附加程序设置为“控制台”。 关于如何做到这一点的任何想法?

示例程序如下:

public class Sample {

public static void main(String[] arg) {
        logger.debug("start of the main method");
        Scanner in = new Scanner(System.in);
        System.out.println("Please enter start date in the format YYYY-MM-DD");
        String startDate = in.nextLine();
        logger.debug("The entered start date is " + startDate);
        System.out.println("Please enter end date in the format YYYY-MM-DD");
        logger.debug("The entered end date is " + endDate);

    }
}

您可以使用此答案中描述的方法代替>> 所以而不是:

java -jar Sample.jar >> Sample.log

......你可以这样做:

java -jar Sample.jar | tee -a Sample.log

对于 Windows,您可以尝试使用以下内容: this question or this one

可以使用 Windows PowerShell 访问tee 这可以从开始菜单打开。

这个问题真的帮助我找到了一种访问tee命令的方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM