2011-05-27 32 views
2

我想將錯誤流從java控制檯應用程序重定向到文件和控制檯。在正常情況下,錯誤僅在控制檯中顯示。我想要在控制檯和文件中顯示。我怎樣才能做到這一點?當我寫:將錯誤流重定向到Windows中的文件和控制檯

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

然後將錯誤重定向到文件,但我不認爲他們在控制檯上。在這種情況下,任何人都知道如何將日期和時間添加到日誌中?

我正在使用Windows 2003 Server。

回答

3

這當然是通過過濾器管道輸出的簡單練習,在這種情況下,命令tee在微軟的命令解釋器中完成,這與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的端口。有幾種選擇。 Oft提到的是GNUWin32,cygwinunxutils。鮮爲人知,但在某些方面更好的是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,從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處理。這個迴旋餘地會影響你所看到的時間戳的相對性(相互之間)和絕對性(對掛鐘)的精確度。

相關問題