【问题标题】:Redirect Error Stream to File and Console in Windows在 Windows 中将错误流重定向到文件和控制台
【发布时间】:2011-09-03 05:08:51
【问题描述】:

我想将错误流从 java 控制台应用程序重定向到文件和控制台。在正常情况下,错误仅显示在控制台中。我想在控制台和文件中显示。我怎样才能做到这一点?当我写的时候:

java -classpath lib.jar com.hertz.test.Blad 2>error.log

然后错误重定向到文件,但我没有在控制台上看到它们。还有人知道在这种情况下如何在日志中添加日期和时间吗?

我在 Windows 2003 Server 中工作。

【问题讨论】:

    标签: console stream pipe stderr redirectstandardoutput


    【解决方案1】:

    这当然是一个通过过滤器管道输出的简单练习,在本例中是 tee 命令,它在 Microsoft 的命令解释器中完成,与 JP Software 的 TCC/LE 和(非 C- shell 家族)Unix shell:

    java -classpath lib.jar com.hertz.test.Blad 2>&1 | tee error-and-output.log
    

    区别对待标准输出和标准错误只不过是一个重定向语法的练习,这里的这个例子只是几种可能性之一,是一个单独的问题。

    java -classpath lib.jar com.hertz.test.Blad 2>&1 1>con | tee error.log
    

    剩下的就是获取tee 命令。有几种可能:

    • 使用 Unix tee 命令的端口。 有多种选择。经常提到的是GNUWin32cygwinunxutils。鲜为人知但在某些方面更好的是SFUA utility toolkit 中的工具,它们在Subsystem for UNIX-based Applications 中运行,Windows 7 Ultimate 版和 Windows Server 2008 R2 的包装盒中就在其中。 (对于Windows XP和Windows Server 2003,可以download和安装Services for UNIX version 3.5。)这个工具包有大量的命令行TUI工具,从mvdu,通过Korn和C shell,到perlawk。它有 x86-64 和 IA64 两种风格以及 x86-32。这些程序在 Windows 的本机适当的 POSIX 环境中运行,而不是使用模拟器 DLL(例如cygwin1.dll)在 Win32 上分层。是的,该工具包有 tee 以及其他大约 300 个。
    • 使用人们编写和发布的众多本机 Win32 tee 命令之一。 其中之一是 Ritchie Lawrence's MTEE,如您所见,它有 /D/T 选项来添加时间和它处理的每一行都带有日期戳。
    • 使用带有内置TEE 命令的替换命令解释器。 JP Software's TCC/LE 就是这样一种。 TCC/LE 有a built in TEE command。如您所见,它还具有/D/T 选项,可以为它处理的每一行添加时间和日期戳。

    顺便说一句:最好让您的应用程序自己添加日期和时间戳,而不是通过TEE 命令对它们进行后处理。由于几个原因,与应用程序在其标准流是管道时的行为方式以及管道的工作方式有关,每行输出不一定会在您的应用程序首先生成它时由TEE 处理。余地会影响您看到的时间戳的相对(相对于彼此)和绝对(相对于挂钟)精度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 2021-11-25
      • 2013-08-06
      • 1970-01-01
      • 2011-10-15
      • 2023-03-19
      相关资源
      最近更新 更多