首页 > 解决方案 > 为什么 System.out.printlin 和 Logger 不能在我的 websocket 中工作?

问题描述

谁能告诉我为什么我的课堂上没有任何记录,而我使用 System.out.println 打印的也没有显示在日志或控制台中?

我的 websocket 端点类被命名为“org.america3.websockets.sockets.WSEndPoint”

我知道它在 .WAR 包中(在 .EAR 包中)成功部署到 Wildfly,因为我的 html 页面确认它打开了一个 websocket 对象。

从我的端点类:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;    
@Transient 
    final Logger logger = LoggerFactory.getLogger(WSEndpoint.class);

在我的standalone-full.xml

<subsystem xmlns="urn:jboss:domain:logging:3.0">
...
  <console-handler name="CONSOLE">
    <level name="INFO"/>
    <formatter>
      <named-formatter name="COLOR-PATTERN"/>
    </formatter>
  </console-handler>
  ...
  <console-handler name="MY-CONSOLE" autoflush="true">
    <formatter>
      <named-formatter name="MY-PATTERN"/>
    </formatter>
    <target name="System.out"/>
  </console-handler>
  ...
  <console-handler name="TEST-HANDLER">
    <level name="INFO"/>
    <formatter>
      <named-formatter name="TEST-PATTERN"/>
    </formatter>
  </console-handler>
  ...
  <periodic-rotating-file-handler name="FILE" autoflush="true">
    <formatter>
      <named-formatter name="PATTERN"/>
    </formatter>
    <file relative-to="jboss.server.log.dir" path="server.log"/>
    <suffix value=".yyyy-MM-dd"/>
    <append value="true"/>
  </periodic-rotating-file-handler>
...
  <logger category="org.america3" use-parent-handlers="false">
    <level name="ALL"/>
    <handlers>
      <handler name="TEST-HANDLER"/>
    </handlers>
  </logger>
...
  <root-logger>
    <level name="INFO"/>
    <handlers>
      <handler name="CONSOLE"/>
      <handler name="FILE"/>
    </handlers>
  </root-logger>
...
  <formatter name="PATTERN">
    <pattern-formatter pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n"/>
  </formatter>
  <formatter name="COLOR-PATTERN">
    <pattern-formatter pattern="%K{level}%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n"/>
  </formatter>
  <formatter name="MY-PATTERN">
    <pattern-formatter pattern="MeMeMe%s%n"/>
  </formatter>
  <formatter name="TEST-PATTERN">
   <pattern-formatter pattern="*** %s%n"/>
  </formatter>
...
</subsystem>

标签: websocketserver-sidewildfly-10java.util.logging

解决方案


我不确定这是否是唯一的答案,但它确实有效。

最初,我将 Endpoint 打包在用于部署 Session bean 的同一个 jar 中。并把罐子做成了我耳朵包的一个模块。会话 Bean 已正确部署和记录。端点没有。

然后我在 META-INF/classes of a war 包下重新部署了我的端点作为第二个 ear 模块,它可以正常工作。

我确定我在某处读到了 Endpoint 可以与其他类一起部署在 ear 包中。所以我不确定我是否修复了一些我最初没有修复的其他错误——在我重新打包应用程序时已修复。

但是现在它可以正常工作,所以我将把我的端点保留在 war META-INF/classes 目录中。


推荐阅读