【问题标题】:System.out.print() is not worked, log4j still works wellSystem.out.print() 不起作用,log4j 仍然可以正常工作
【发布时间】:2026-02-04 05:05:01
【问题描述】:

谁能解释我的问题如下。

  1. 我的 Java Web 应用程序使用 org.apache.log4j.Logger 库。
  2. 我输入了如下命令:log.info("this is log4j output")
  3. 我输入了另一个命令,例如 System.out.println("This is system out put")
  4. 好的,我通过tomcat服务器部署web应用。

现在,我正在跟踪 catalina.out 的日志。 我的问题:

在应用程序运行过程中,“this is log4j output”显示,但“This is system output”没有显示。

这是 log4j 配置:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true"
    xmlns:log4j='http://jakarta.apache.org/log4j/'>

    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" 
          value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
        </layout>
    </appender>

    <root>
        <level value="DEBUG" />
        <appender-ref ref="console" />
    </root>

</log4j:configuration>

我认为它们都会显示(log4j 输出和 system.out)。

我不知道为什么。谁能解释一下这个问题?

谢谢!

【问题讨论】:

  • System.out.print 转到您服务器的终端。检查(如果有的话),这是你永远不应该在远程部署的代码上使用 System.out.print 的原因之一
  • @Stultuske:是的,我没有在最新的代码版本中使用 System.out.println。这只是我想知道的问题。谢谢!

标签: java tomcat log4j


【解决方案1】:

System.out 打印到“标准输出”控制台。这可以是您的文本控制台,但也可以是任何东西,因为它可以很容易地配置到其他地方。

另一方面,任何记录器库都可以配置为记录到您想要的任何位置。

长话短说:这很可能是由于您的环境中一些特定的配置设置造成的。但我们不知道您的设置,因此无法给出更具体的答案。

【讨论】:

  • 非常感谢。我用 log4j 配置更新了我的问题。你的回答有什么新闻吗?
  • 不客气。我不是那个级别的专家,但我会看看我能做什么。