【问题标题】:Where does system.out.println in tomcat under windows gets written?windows下tomcat的system.out.println写在哪里?
【发布时间】:2012-12-18 22:47:56
【问题描述】:

我正在使用用于记录 system.out.println 语句的第三方库(无法修改)。输出在控制台中显示正常,但我无法在 catalina[...].log 文件中检索这些信息?

是否可以将这些发送到 log4j?

【问题讨论】:

  • 你到底为什么要标记log4j?这个问题与 Log4j 到底有什么关系?
  • 我希望能够将这些发送到 log4j

标签: java tomcat logging log4j


【解决方案1】:

在 unix 上运行 Tomcat 时,控制台输出通常重定向到名为 catalina.out 的文件。该名称可使用环境变量进行配置。 (参见启动脚本)。

http://tomcat.apache.org/tomcat-7.0-doc/logging.html#Console

【讨论】:

    【解决方案2】:

    System.out.println() 打印到标准输出。因此,如果您想在日志文件中查看这些语句,只需将 stdout 重定向到 Tomcat 启动脚本中所需的位置即可。

    【讨论】:

    • 不用猜,tomcat 就是这样标记的。
    • 您有说明如何进行该配置的链接吗?
    • @Stainedart 你必须自定义你的启动脚本。
    • “Tomcat 启动脚本”和“启动脚本”含糊不清——你在说什么?
    • 这里是如何重定向标准输出,编辑 conf/logging.properties 并将这一行 .handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler 更改为 .handlers = 1catalina .org.apache.juli.FileHandler 那么它只会记录到 catalina..log 或 tomcat8-stdout..log。 “由 serverfault.com 的 sourcedelica 回答”
    【解决方案3】:

    您也可以在 cat /var/log/messages 中找到这些日志

    如果你尝试

    cat /var/log/messages | grep server
    

    【讨论】:

      【解决方案4】:

      如果你运行的是 JSP 那么你需要添加

       <%@ page isThreadSafe="false"  %>
      

      然后您的所有 System.out.println 将开始显示在 catalina.out 文件中。

      如果您使用 Catalina.sh 从命令行运行启动 tomcat,您将在输出中看到打印结果。

      【讨论】:

        【解决方案5】:

        您可以在TOMCAT_HOME/logs/stdout_20130104.txt 中找到它(文件名可能会改变,但日志文件通常在文件夹TOMCAT_HOME/logs/ 中。

        对我来说,我的代码中的所有系统输出都写在这样的文件中。

        【讨论】:

        • 这些文件对我来说不存在。
        【解决方案6】:

        在我的例子中(Fedora 29 apache-tomcat-8.5.39),它位于 logs 文件夹内的 catalina.out 文件中。

        【讨论】:

          猜你喜欢
          • 2015-10-17
          • 2010-12-05
          • 2012-01-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多