websocket - 为什么 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>
解决方案
我不确定这是否是唯一的答案,但它确实有效。
最初,我将 Endpoint 打包在用于部署 Session bean 的同一个 jar 中。并把罐子做成了我耳朵包的一个模块。会话 Bean 已正确部署和记录。端点没有。
然后我在 META-INF/classes of a war 包下重新部署了我的端点作为第二个 ear 模块,它可以正常工作。
我确定我在某处读到了 Endpoint 可以与其他类一起部署在 ear 包中。所以我不确定我是否修复了一些我最初没有修复的其他错误——在我重新打包应用程序时已修复。
但是现在它可以正常工作,所以我将把我的端点保留在 war META-INF/classes 目录中。
推荐阅读
- vue.js - 在Vue中制作链接组件的链接列表组件
- c# - 为什么 MVVM 模式不适用于 ChartValues?
- php - 属性“id”取自非对象
- python - Python elementtree 获取 XML CDATA
- javascript - 如果节点属性与功能混淆,如何突出显示错误,反之亦然。例如,显示 `node.innerText()` 或 `node.toLowerCase` 的错误
- java - 如何打破某些语句的扫描仪并为其他语句运行
- r - 如何在r中选择具有特定值的行?
- sql - 返回最高计数记录
- flutter - 无法创建渡槽项目
- c# - 为什么我的异步写入函数不运行?