我的应用程序有许多System.out.println()语句。我想从println捕获消息并将它们发送到标准记录器(Log4j、JUL等)。怎么做? 最佳答案 System类有一个setOut和setErr可用于将输出流更改为,例如,带有支持File的新PrintStream,或者在这种情况下,可能是另一个使用您的日志子系统的流选择。请记住,如果您将日志库配置为输出到标准输出或错误(可能是无限递归类型),您很可能会遇到麻烦。如果是这种情况,您可能只想将System.out.print类型的语句替换为真正的日志记录调用。
当我可以导入静态java.lang.Math.abs时,我无法导入静态java.lang.System.out.println,这似乎很奇怪。这背后有什么原因,还是我在做一些我目前看不到的非常愚蠢的事情?(使用Eclipse。) 最佳答案 Math是一个类,abs是一个静态方法。System.out是一个静态字段而不是一个类。所以它的println方法实际上并不是静态方法,而是静态字段上的实例方法。 关于java-为什么我不能导入静态java.lang.System.out.printl
System.out.println()和System.err.println()在Java中有什么区别? 最佳答案 在Java中System.out.println()将打印到您正在使用的系统的标准输出。另一方面,System.err.println()将打印到标准错误。如果您使用的是简单的Java控制台应用程序,两个输出将是相同的(命令行或控制台),但您可以重新配置流,例如,System.out仍会打印到控制台,但System.err写入文件。此外,Eclipse等IDE默认以红色文本显示System.err,以黑色文本显示Sy
出于测试目的,我正在从另一个应用程序内部运行一个应用程序。我想将测试应用程序的输出重定向到一个文件,这样我就可以在每次测试后都有一个日志。有没有办法将应用程序的输出从java的命令行重定向到文件? 最佳答案 您可以使用Windows命令行支持的输出流重定向器,例如*nixshellsjava-jarmyjar.jar>output.txt或者,当您从vm内部运行应用程序时,您可以从java本身重定向System.out。你可以使用方法System.setOut(PrintStreamps)它替换了标准输出流,因此对System.ou
我听说使用System.out.println进行日志记录是一种非常糟糕的做法,这可能会导致服务器出现故障。我不使用这种方法,但我很想知道为什么System.out.println在后端代码中使用时会产生如此垃圾的东西。 最佳答案 System.out.println是一个IO操作,因此非常耗时。在代码中使用它的问题是,您的程序将等到println完成。对于小型网站,这可能不是问题,但一旦加载或多次迭代,您就会感到痛苦。更好的方法是使用日志框架。他们使用消息队列并且仅在没有其他输出时才写入。另一个好处是您可以为不同的目的配置单独的日
为什么需要刷新某些流(FileOutputStream和来自Sockets的流)而标准输出流不需要?每次有人使用System.outPrintStream对象时,无论是在调用println()还是write(),他们从不刷新流。但是,其他程序员习惯性地将flush()称为PrintStream/PrintWriter与其他流。我最近向几位程序员提出了这个问题,有些人认为Java中有一些后台处理可以自动刷新System.out流,但我找不到任何相关文档.这样的事情让我想知道简单地调用System.out.println()是否与平台无关,因为某些系统可能需要您刷新流。
这是来自System命名空间的out类中的静态println函数吗?namespaceSystem{classout{staticprintln...}我该如何解释这个名字?这个函数在JRE的什么地方定义?在java.lang.System/java.lang.Object? 最佳答案 没有。实际上out是System类中的一个静态成员(不像.NET中那样),是PrintStream的一个实例。而println是PrintStream类的普通(重载)方法。见http://download.oracle.com/javase/6/do
在Java应用程序中,我使用了一些对System.out.println()的调用。现在我想找到一种以编程方式删除这些东西的方法。我用谷歌找不到任何解决方案,所以有什么提示吗? 最佳答案 您可以打印退格字符\b的次数与之前打印的字符一样多。System.out.print("hello");Thread.sleep(1000);//Justtogivetheuserachancetosee"hello".System.out.print("\b\b\b\b\b");System.out.print("world");注意:在Mars
如何获取JPanel所在的JFrame?我目前的解决方案是向面板询问它的父级(等等),直到我找到一个窗口:Containerparent=this;//thisisaJPaneldo{parent=parent.getParent();}while(!(parentinstanceofWindow)&&parent!=null);if(parent!=null){//foundaparentWindow}有没有更优雅的方式,标准库中的方法可能是? 最佳答案 您可以使用SwingUtilities.getWindowAncestor(
我最近开始学习SpringSecurity,今天我遇到了一个基本的(我相信的)问题:为什么我不能访问Servlet过滤器中的当前Principal,如下面的类(class)所示:packagecom.acme.test;importjava.io.IOException;importjavax.servlet.Filter;importjavax.servlet.FilterChain;importjavax.servlet.FilterConfig;importjavax.servlet.ServletException;importjavax.servlet.ServletRequ