2013-11-01 40 views
0

如何關閉我的控制檯輸出中的日誌記錄?我不希望看到我的Java程序的輸出:Netbeans關閉玻璃魚日誌記錄(tyrus /灰熊)

Nov 01, 2013 12:01:29 PM org.glassfish.tyrus.server.ServerContainerFactory create 
INFO: Provider class loaded: org.glassfish.tyrus.container.grizzly.GrizzlyEngine 
Nov 01, 2013 12:01:29 PM org.glassfish.grizzly.http.server.NetworkListener start 
INFO: Started listener bound to [0.0.0.0:8029] 
Nov 01, 2013 12:01:29 PM org.glassfish.grizzly.http.server.HttpServer start 
INFO: [HttpServer] Started. 
Nov 01, 2013 12:01:29 PM org.glassfish.tyrus.server.Server start 
INFO: WebSocket Registered apps: URLs all start with ws://localhost:8029 
Nov 01, 2013 12:01:29 PM org.glassfish.tyrus.server.Server start 
INFO: WebSocket server started. 
+0

您使用的是log4j嗎?如果是這樣,您可以將日誌級別設置爲致命。 – EdgeCase

+0

如果您不想在控制檯中顯示任何內容,只需創建一個沒有控制檯的應用程序即可。這對你的用例可能嗎?如果沒有,請告訴我們更多:) –

+0

如果我想在ubuntu-server上執行它,不會無法正常工作:p – numv

回答

0

我很驚訝,Java不具備此功能的烘烤(或者我找不到它這是一種同樣的事情現在)...

System.outSystem.err分配給不寫任何內容(記錄)的流。在.NET中,有Stream.Null這是一個沒有後備存儲的流,即一個流或一個流。

在Java中,這樣的Stream容易通過延伸java.io.OutputStream內置:

class VoidStream extends OutputStream { 
    @Override 
    public void write(int b) throws IOException { 
     // 
     // -------------- 
     // | void space | 
     // -------------- 
     // 
    }  
} 

現在,設置VoidStreamSystem.outSystem.err使用System.setOut()System.Err()造成空控制檯,

PrintStream ps = new PrintStream(new VoidStream()); 
System.setOut(ps); 
System.setErr(ps); 

理論上,一個警告是System.console(),因爲它的輸出流不能設置,但功能爲可以調用和format()。幸運的是,System.console()僅在程序運行在終端(otherwise it returns null)中且仍在使用終端時纔可用? ;-)