将“错误流”重定向到Windows中的“文件和控制台”



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

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

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

我在Windows2003Server中工作。

这当然是一个简单的练习,通过过滤器(在这种情况下是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命令的端口有几种选择。提到的是GNUWin32、cygwin和unxutils。不太为人所知,但在某些方面更好的是SFUA实用工具工具包中的工具,它在基于UNIX的应用程序子系统中运行,该子系统与Windows 7 Ultimate版本和Windows Server 2008 R2一起提供。(对于Windows XP和Windows Server 2003,可以下载并安装Services For UNIX 3.5版。)此工具包有大量命令行TUI工具,从mvdu,到Korn和C shell,再到perlawk。它有x86-64和IA64两种口味,也有x86-32。这些程序在Windows的原生POSIX环境中运行,而不是使用在Win32上分层的模拟器DLL(如cygwin1.dll)。是的,这个工具包有tee,还有大约300个其他的
  • 使用人们编写和发布的许多本机Win32 tee命令之一Ritchie Lawrence的MTEE就是其中之一,正如您所看到的,它有/D/T选项,可以为它处理的每一行添加时间和日期戳
  • 使用内置TEE命令附带的替换命令解释器JP Software的TCC/LE就是其中之一。TCC/LE有一个内置的TEE命令。正如您所看到的,它还有/D/T选项,可以为它处理的每一行添加时间和日期戳

顺便说一句:应用程序本身添加日期和时间戳比TEE命令对它们进行后处理要好。由于几个原因,涉及到当应用程序的标准流是管道时应用程序的行为以及管道的工作方式,在应用程序最初生成输出时,TEE不一定会处理每一行输出。回旋余地将影响您看到的时间戳的相对(相对于彼此)和绝对(相对于挂钟)精度。

相关内容

  • 没有找到相关文章

最新更新