2014-10-19 133 views
1

使用Eclipse:的System.out.println打印服務器

當我們通常在Java文件系統輸出任何東西,它打印在Eclipse控制檯,但是當我們的應用程序部署在JBoss則系統輸出打印在服務器控制檯的值和服務器日誌。這是什麼,這使得這個改變?

對於如: 在獨立的普通Java程序

System.out.println("Java is Wonderful") Eclipse控制檯上打印

但是,如果我寫的同一個句子中的Java文件,即Web應用程序的一部分,應用程序部署在JBoss上,這個值被打印在JBoss控制檯和服務器日誌上。

我知道的是「out」是指系統控制檯,所以如果我sysout什麼,它應該寫入系統的控制檯。那麼爲什麼在JBoss上部署Web應用程序的情況下,它會在服務器控制檯上寫入。

回答

2

System.out的值作爲運行應用程序的JVM的「標準輸出」流開始。

  • 當您運行在Eclipse的應用程序,Eclipse已經使用System.setOut(...)到寫入Eclipse控制檯流。

  • 當您從Eclipse啓動JVM時,該JVM的System.out將開始返回到Eclipse控制檯。 JVM 中的應用程序可能會然後使用System.setOut(...)更改它。

  • 當您從命令行啓動JVM時,JVM的System.out將開始返回到shell的控制檯。

  • 對於像JBoss這樣的東西,啓動腳本(或本機啓動器)很可能會在啓動應用程序之前更改標準輸出流。應當記錄的地方...


所以要找出到底是怎麼回事,你就需要看你如何推出的JBoss。

但是沒有什麼特別的神祕。

0

您的服務器的啓動腳本可能包含類似...> stdout.txt 2> stderr.txt...> allout.txt 2>&1。它在類Unix操作系統中重新引導標準IO。其他操作系統具有相似的命令。