我想将错误流从java控制台应用程序重定向到文件和控制台。在正常情况下,错误仅显示在控制台中。我想在控制台和文件中显示。我怎样才能做到这一点?我写的时候:
java -classpath lib.jar com.hertz.test.Blad 2>error.log
然后错误重定向到文件但我没有在控制台上看到它们。在这种情况下,是否有人知道如何在日志中添加日期和时间?
我在Windows 2003 Server中工作。
答案 0 :(得分:3)
这当然是通过过滤器管道输出的一个简单练习,在这种情况下是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
命令。有几种可能性:
tee
命令的端口。有多种选择。提到的是GNUWin32,cygwin和unxutils。不太知名但在某些方面更好的是SFUA utility toolkit中的工具,它们运行在Subsystem for UNIX-based Applications中,它出现在Windows 7旗舰版和Windows Server 2008 R2的复选框中。 (对于Windows XP和Windows Server 2003,可以download并安装Services for UNIX version 3.5。)此工具包具有大量命令行TUI工具,来自mv
和du
,通过Korn和C shell,到perl
和awk
。它有x86-64和IA64两种版本以及x86-32。这些程序在Windows本地适当的POSIX环境中运行,而不是在Win32上使用模拟器DLL(例如cygwin1.dll
)分层。是的,工具包有tee
,还有大约300个。tee
命令之一。其中一个是Ritchie Lawrence's MTEE
,您可以看到/D
和/T
选项,为其处理的每一行添加时间和日期戳。TEE
命令附带的替换命令解释程序。 JP Software's TCC/LE就是这样。 TCC / LE有a built in TEE
command。如您所见,它还具有/D
和/T
选项,可为其处理的每一行添加时间和日期戳。顺便说一句:您的应用程序最好添加日期和时间戳,而不是TEE
命令对它们进行后处理。由于多种原因,与应用程序在标准流为管道时的行为方式以及管道如何工作有关,每个输出行在创建应用程序时都不一定由TEE
处理。余地将影响你看到的时间戳的相对(相互之间)和绝对(到挂钟)准确度。