簡體   English   中英

system.out和system.err之間的區別

[英]difference between system.out and system.err

據我所知,out和err屬於同一類PrintStream 任何人都可以告訴我他們的差異......他們如何改變自己的行為?

差異並不明顯,因為默認情況下,大多數操作系統都會將它們寫入控制台(同一文件,控制台也是文件)。 但是,您可以讓System.out寫入文件, System.err寫入控制台(監視器) - 這只是一種情況。

編寫一個發出System.out和System.err消息的程序,並嘗試這樣做:

java MyProgram > out.txt 2> err.txt # On a *NIX.

System.out消息將轉到out.txt, System.err消息將轉到err.txt。 要記住的基本要點是將System.out和System.err視為文件流(它們是什么),而不是在監視器上輸出的機制,這就是我認為的初學者。

它們分別轉到系統stdout和stderr流。 在大多數操作系統上,這些是不同的,可以發送到不同的地方。 例如,如果您的程序的輸出要由另一個程序解析,這可能是有用的 - 如果它需要報告錯誤,stderr通常會是更好的地方,因為您可能已將其設置為引起人們的注意。

他們有相同的行為。 但是first(out)是對標准輸出流的引用(默認情況下它是一個控制台)。 第二個(錯誤)是對標准錯誤流的引用(默認情況下它也是一個控制台)。

但是如果需要,可以更改引用,或者可以為每個引用添加包裝器/過濾器。

例如,我的IDE以紅色顯示err流的輸出。

System.out將輸出發送到標准輸出流。 System.err將輸出發送到標准錯誤流。 默認情況下,這兩個都寫入控制台。

但是,好處是可以重定向兩個流,因此您可以將system.out輸出重定向到正常的日志文件,並且可以將System.err輸出重定向到錯誤日志。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM