System.out.println 不打印到控制台

Posted

技术标签:

【中文标题】System.out.println 不打印到控制台【英文标题】:System.out.println not printing to console 【发布时间】:2015-05-04 14:41:18 【问题描述】:

我有一个在 Wildfly 8.* 上运行的 Spring Web 应用程序,由于某种原因,它不会打印到控制台。我看到所有控制台日志和堆栈跟踪都很好,但系统消息没有出现。

问题可能与我的 log4j 设置有关,所以我将发布该配置;

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration  PUBLIC
  "-//APACHE//DTD LOG4J 1.2//EN" "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/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="%dyyyy-MM-dd HH:mm:ss %-5p %c1:%L - %m%n" />
        </layout>
    </appender>

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

我之前在 JBoss 7.1 上运行过应用程序,但是没有出现这个问题,所以我真的不知道可能出了什么问题。

随时询问我的任何其他配置,不确定需要什么。

编辑:

logger.org.jboss.as.config.level=DEBUG
logger.org.jboss.as.config.useParentHandlers=true

logger.jacorb.config.level=ERROR
logger.jacorb.config.useParentHandlers=true

logger.org.apache.tomcat.util.modeler.level=WARN
logger.org.apache.tomcat.util.modeler.useParentHandlers=true

logger.com.arjuna.level=WARN
logger.com.arjuna.useParentHandlers=true

handler.CONSOLE=org.jboss.logmanager.handlers.ConsoleHandler
handler.CONSOLE.level=INFO
handler.CONSOLE.formatter=COLOR-PATTERN
handler.CONSOLE.properties=autoFlush,target,enabled
handler.CONSOLE.autoFlush=true
handler.CONSOLE.target=SYSTEM_OUT
handler.CONSOLE.enabled=true

handler.FILE=org.jboss.logmanager.handlers.PeriodicRotatingFileHandler
handler.FILE.level=ALL
handler.FILE.formatter=PATTERN
handler.FILE.properties=append,autoFlush,enabled,suffix,fileName
handler.FILE.constructorProperties=fileName,append
handler.FILE.append=true
handler.FILE.autoFlush=true
handler.FILE.enabled=true
handler.FILE.suffix=.yyyy-MM-dd
handler.FILE.fileName=C\:\\wildfly-8.2.0.Final\\standalone\\log\\server.log

formatter.PATTERN=org.jboss.logmanager.formatters.PatternFormatter
formatter.PATTERN.properties=pattern
formatter.PATTERN.pattern=%dyyyy-MM-dd HH\:mm\:ss,SSS %-5p [%c] (%t) %s%E%n

formatter.COLOR-PATTERN=org.jboss.logmanager.formatters.PatternFormatter
formatter.COLOR-PATTERN.properties=pattern
formatter.COLOR-PATTERN.pattern=%Klevel%dHH\:mm\:ss,SSS %-5p [%c] (%t) %s%E%n

这是我在独立部署文件夹中的日志配置。

【问题讨论】:

你有没有考虑到DEBUG关卡是开放打印的 看看issues.jboss.org/browse/WFCORE-478 这似乎与我遇到的问题一模一样。我将尝试将 log4j 重新添加到我的项目中,看看是否可以解决问题。如果是,您应该将其作为答案,以便我标记它。 嘿,看看我的问题,这里是关于登录 wildfly 谢谢:***.com/q/59006162/7149835 【参考方案1】:

由于您使用的是日志框架,因此有两种方法可以修复它:

    删除日志框架和所有配置文件(我为什么要这样做) 将log4j.properties 文件从src/main/resources 移动到WEB-INF 文件夹。

引用:JBoss Docs,“每个部署日志记录”部分

每个部署的日志记录允许您将日志记录配置文件添加到您的部署中,并根据配置文件配置该部署的日志记录。在 EAR 中,配置应该在 META-INF 目录中。在 WAR 或 JAR 部署中,配置文件可以位于 META-INF 或 WEB-INF/classes 目录中。 允许使用以下配置文件:

logging.properties jboss-logging.properties log4j.properties log4j.xml jboss-log4j.xml

【讨论】:

【参考方案2】:

几年前我在 .war (WEB-INF/classes) 的根级别有一个 log4j.properties 文件,它导致了同样的问题 - 删除修复了它

【讨论】:

【参考方案3】:

我通常在 Wildfly 中为每个部署配置日志时遇到问题,但您可以使用 Wildfly 中的日志记录系统,将独立 ou 域配置文件的日志记录配置更改为这样就可以了:

<root-logger>
    <level name="TRACE"/>
    <handlers>
        <handler name="CONSOLE"/>
        <handler name="FILE"/>
    </handlers>
</root-logger>

【讨论】:

您好,我添加了用于日志记录的独立配置文件。虽然我认为它可以在 .xml 或 .properties 中,但不确定在哪里定义 你在使用wildfly吗?独立应该是位于 wildfly/standalone/configuration/standalone.xml 或 wildfly/domain/configuration/standalone.xml 中的 i xml 你的建议已经在我的独立版本中了。我已经通过从我的项目中完全删除 log4j 以及删除依赖项来解决这个问题。问题可能是那里的配置。

以上是关于System.out.println 不打印到控制台的主要内容,如果未能解决你的问题,请参考以下文章

java的System. out. println(),为啥out能调用println()?

java中的system.out是啥意思

java反射调用System.out.println实现控制台打印

tomcat没有打印system.out.println()

System.out.println 和 System.err.println 乱序

Java 中 System.out.println() 的字符限制