我正在從 bash 終端機運行 java 程序OS X 10.8
,並嘗試重定向它產生的輸出。
但是,當通過管道運行它或將其重定向到文件時,輸出為空,但我在終端中看到輸出。
為了說明這一點:
> java program.java
13/10/02 14:18:30 WARN some
13/10/02 14:18:30 INFO log
13/10/02 14:18:30 INFO messages
...
> java program.java > log
> cat log
>
java 程式是否可以設定為寫入另一個流stdout
,但仍會在終端機中產生輸出。這樣的事可能嗎?
答案1
有三為每個程式開啟標準檔案stdin
(標準輸入)、stdout
(標準輸出)和stderr
(標準錯誤)。預設情況下,寫入兩者stdout
並stderr
在終端中輸出。
stderr
將錯誤和日誌訊息寫入而不是stdout
為了不將日誌或錯誤訊息與實際程式輸出混合是一種常見的約定。您可以stderr
使用重定向2>
,例如:
command 2> log