Java 通过套接字发送系统输出

Java 通过套接字发送系统输出,java,sockets,system.out,logback,Java,Sockets,System.out,Logback,如何将输出从System.out发送到插座,例如PrintWriter 我需要将控制台输出上出现的任何内容(std和err)发送到PrintWriter,从而发送一个套接字 谢谢。也许你可以这样试试: OutputStream os = socket.getOutputStream(); // for example PrintStream ps = new PrintStream(os); System.setOut(ps); 嗯,你可以,但请更具体地说明你的要求。如果您想发送日志消息,最好

如何将输出从System.out发送到插座,例如PrintWriter

我需要将控制台输出上出现的任何内容(std和err)发送到PrintWriter,从而发送一个套接字


谢谢。

也许你可以这样试试:

OutputStream os = socket.getOutputStream(); // for example
PrintStream ps = new PrintStream(os);
System.setOut(ps);
嗯,你可以,但请更具体地说明你的要求。如果您想发送日志消息,最好使用一些日志框架,比如您可以立即从
ConsoleAppender
切换到
SocketAppender

您还可以将
System.out
替换为
System.setOut()
,并将输出重定向到其他目标

如果要重定向某个应用程序的整个输出,还可以尝试一些bash/
nc
解决方法:

$ java -jar your_app.jar | nc some_server

你考虑过使用记录器吗?一些想法:我知道有一个System.setOut()方法,但是如何传递PrintWriter而不是PritStream?我必须编辑大量代码才能使用PrintStream,目前我正在使用PrintWriter。关于如何将System.setOut()转换为PrintWriter有什么想法吗?如果它不可行,那么我将不得不切换到PrintStream。感谢您可以这样做:PrintWriter out=new PrintWriter(System.out,true);好啊但我以后怎么用它?!?我的PrintWriter已经指向套接字:PrintWriter out=new PrintWriter(new OutputStreamWriter(m_clientSocket.getOutputStream());然后我可以做,例如out.println();你的输出不是打印到控制台而不是插座吗?!?如果我错了,请纠正我,我必须尝试一下。因此,如果您说System.out.println(“hello”),那么forth将被重定向到socketPrintWriter out=new PrintWriter(new OutputStreamWriter(m_clientSocket.getOutputStream());OutputStream os=新的WriterOutputStream(输出);PrintStream ps=新的PrintStream(os);系统放样(ps);使用日志框架似乎是个好主意,应该可以帮助我解决其他问题。非常感谢。