[英]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
。 这可以从开始菜单打开。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.