Netbeans关闭玻璃鱼记录(tyrus / grizzly)

时间:2013-11-01 11:07:20

标签: java logging netbeans glassfish

如何关闭控制台输出中的日志记录?我不想看到我的Java程序的输出:

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.

1 个答案:

答案 0 :(得分:0)

我很惊讶Java没有使用这个功能(或者我现在找不到它是同样的东西)......

System.outSystem.err分配给不写任何内容的流(记录)。在.NET中,Stream.Null是一个没有后备存储的流,即 null 流或 void 流。

在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(),因为无法设置其输出流,但可以调用printf()format()作为函数。幸运的是,System.console()仅在程序在终端(otherwise it returns null)中运行且谁仍在使用终端时才可用? ; - )