2013-11-01 38 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)中且仍在使用终端时才可用? ;-)