使用 tail 如何在提示后在日志文件中输入值? (弹簧靴)

问题描述 投票:0回答:0

我有一个 Spring boot 应用程序,它使用

java.util.Scanner
类来提示用户在启动期间确认某个操作。在intellij IDEA 的终端中打印日志时,此提示正常。但是在
java.util.NoSuchElementException: No line found at java.util.Scanner.nextLine(Scanner.java:1651)
服务器上将 spring boot 应用程序作为
jar
文件运行时,它会抛出异常
EC2

我正在使用命令

tail -f -n 500 log_current.log
实时获取启动日志的最新日志。使用的日志依赖是
Log4j2
。下面是相关代码:

Scanner input = new Scanner(System.in);
System.out.println("                  ");
System.out.println("                  ");
do {
    System.out.print("Please enter 'proceed' to continue or 'abort' to cancel startup:");
    String output = input.nextLine();
    if(!StringUtils.isBlank(output)) {
        String formattedOutput = output.toLowerCase().trim();
        if (formattedOutput.equals("proceed"))
            break;
        else if(formattedOutput.equals("abort"))
            abortStartup();
        else
            log.info("invalid input, please retry.");
    }
}while(true);
input.close();

这段代码在 Intellij IDEA 中运行时运行良好。提示

System.out.print("Please enter 'proceed' to continue or 'abort' to cancel startup:");
被打印出来,我可以输入继续或中止。但是在 EC2 服务器上运行应用程序时,此提示从未出现在日志中。相反,它会抛出上述异常
java.util.NoSuchElementException
.

当应用程序在生产环境中作为 jar 文件运行时,如何提示用户输入值?我的猜测是

tail
只是不允许您在日志中输入值。但如果是这种情况,那么我应该使用哪个 linux 工具呢?

谢谢

java linux spring java.util.scanner tail
© www.soinside.com 2019 - 2024. All rights reserved.