我有一个小服务程序。但它没有按预期工作。因此,出于调试目的,我想将语句打印到 java 控制台(可以使用任务栏中的 java 图标打开的控制台)。但是,如果我使用 System.out.println("message"),它不会显示在 java 控制台中。
有没有其他方法可以从 servlet 向控制台显示消息?或者任何人都可以建议我另一种向任何其他控制台显示消息的方法吗?
您希望它出现在哪个控制台中?
根据 servlet 容器(我假设是 Tomcat),日志存储在一个logs
文件夹中。对于 Tomcat,这是tomcat/logs
(或更经常称为CATALINA_HOME/logs
)。如果您在 IDE 中运行它 - 它们应该在 IDE 控制台中。
作为旁注,System.out
对于真实产品不建议使用 - 使用日志框架(如log4j)。
Servlet (HttpServlet) 有一个方法 log(String s) 继承自 GenericServlet 类。
所以你可以只包括
log("output text")
在 servlet 的代码中并查看输出。
如果您使用 Eclipse 日志直接进入控制台。
如果你使用 IntellijIdea 日志进入运行 --> "Tomcat 本地主机日志" 选项卡。
我想将语句打印到 Java 控制台(可以使用任务栏中的 Java 图标打开的控制台)
您需要意识到 servlet 实际上是在服务器端运行,而不是在客户端。这些实际上是两个物理上不同的环境,它们使用 HTTP 协议通过网络相互通信。该 Java 控制台仅适用于在客户端运行的 Java 程序,例如applet和JNLP。
在您的情况下,您只需要阅读服务器日志。这就是stdout
默认情况下将打印到的地方,或者使用更好的可配置日志框架,例如logback。服务器日志通常位于服务器安装目录中一个简单的文件夹/文件中,例如/logs
Tomcat。
在 servlet 容器(即 Tomcat)的日志文件夹中查找日志文件。
按照建议使用log4j生成调试消息。这个日志框架提供了一个配置文件,您可以在其中设置日志应该写入的位置或日志消息的格式。只要它到位,你可以更换
System.out.println("message");
和
log.debug("your debug message");
或者
log.info("in case of a message with info character");
log.error("routine foo has experienced an exception", e);
现在您的代码更干净了,甚至还有另一个好处 - 正确放置时,这些日志充当您的代码段的文档。
您应该使用日志记录,例如java.util.logging或log4j
相关 log4j 配置示例:
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %c{1} - %m%n"/>
</layout>
</appender>
<root>
<priority value ="debug" />
<appender-ref ref="console" />
</root>