如何关闭控制台输出中的日志记录?我不想看到我的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.发布于 2013-11-20 15:49:01
我感到惊讶的是,Java没有这种功能(或者我找不到它,这在今天是一样的).
将System.out和System.err分配给不写入任何内容的流(以便日志)。在.NET中有一个Stream.Null,它是一个没有后备存储的流,即空流或空流。
在Java中,这样的Stream很容易通过扩展java.io.OutputStream来构建。
class VoidStream extends OutputStream {
@Override
public void write(int b) throws IOException {
//
// --------------
// | void space |
// --------------
//
}
}现在,使用VoidStream和System.Err()将System.out和System.err设置为空控制台,
PrintStream ps = new PrintStream(new VoidStream());
System.setOut(ps);
System.setErr(ps);理论上,一个警告是System.console(),因为不能设置它的输出流,但是可以调用作为printf()和format()的函数。幸运的是,只有当程序在终端(否则,它将返回空。)中运行并且谁还在使用终端时,才能使用该程序?;-)
https://stackoverflow.com/questions/19725566
复制相似问题