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

时间:2019-03-13 09:56:34

标签: java

我有一个小的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);

    }
}

1 个答案:

答案 0 :(得分:1)

您可以使用this answer中描述的方法来代替>>。所以代替:

java -jar Sample.jar >> Sample.log

...您可以这样做:

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

对于Windows,您可以尝试使用以下工具: this questionthis one

可以使用Windows PowerShell访问

tee。可以从开始菜单打开。

This question really helped me in finding a way to access tee command