我有一个servlet。但它没有按预期工作。因此,出于调试目的,我想将语句打印到java控制台(可以使用任务栏中的java图标打开的控制台)。但是,如果我使用System.out.println(“message”),它不会在java控制台中显示。
有没有其他方法可以从servlet向控制台显示消息? 或者任何人都可以建议我另一种方式向任何其他控制台显示消息?
答案 0 :(得分:10)
您希望它出现在哪个控制台中?
根据servlet容器(我假设是Tomcat),日志存储在logs
文件夹中。对于Tomcat,这是tomcat/logs
(或更常被称为CATALINA_HOME/logs
)。如果从IDE中运行它 - 它们应该在IDE控制台中。
作为旁注,使用System.out
不建议使用真实产品 - 使用日志框架(如log4j)。
答案 1 :(得分:2)
我想将语句打印到java控制台(可以使用任务栏中的java图标打开的语句)
您需要意识到servlet实际上是在服务器端运行,而不是在客户端。这些实际上是两个物理上不同的环境,它们使用HTTP协议通过网络相互通信。该Java控制台仅适用于在客户端运行的Java程序,例如applets和JNLP。
在您的情况下,您只需要阅读服务器日志。这就是stdout
默认打印到的地方,或者使用更好的可配置日志框架,例如logback。服务器日志通常位于服务器安装目录中的简单文件夹/文件中,例如/logs
,如果是Tomcat。
答案 2 :(得分:1)
在servlet容器(即Tomcat)的log-folder中查找日志文件。
建议使用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);
现在您的代码更清晰,甚至还有其他好处 - 正确放置后,这些日志可作为代码段的文档。
答案 3 :(得分:1)
Servlet(HttpServlet)有一个从GenericServlet类继承的方法log(String s)。
所以你可以加入
log("output text")
在servlet的代码中并查看输出。
如果您使用Eclipse,则会直接进入控制台。
如果您使用IntellijIdea日志进入运行 - > “Tomcat Localhost Log”选项卡。
答案 4 :(得分:0)
您应该使用日志记录,例如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>