当前位置: 首页 > 知识库问答 >
问题:

Log4j2中的JMS Appender转到Wildfly 14时出错

空鸿云
2023-03-14
  topicConnFacName: com.rsc.mmpl.TopicConnectionFactory
  initialContextFacName: org.jboss.naming.remote.client.InitialContextFactory
  URL: http-remoting://JDEVDWS166:9090
  Topic name: com.rsc.mmpl.MsgHndlrTopic

我的log4j2.xml配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%p %d{yyyy-MMM-dd HH:mm:ss.SSS} %c{3}[line %L] - %m%n"/>
    </Console>
    <JMS name="jmsQueue" destinationBindingName="com.rsc.mmpl.MsgHndlrTopic"
         factoryName="org.jboss.naming.remote.client.InitialContextFactory"
         factoryBindingName="com.rsc.mmpl.TopicConnectionFactory"
         ignoreExceptions="false"
         providerURL="http-remoting://JDEVDWS166:9090">
         <JsonLayout properties="true" complete="true"/>
    </JMS>
  </Appenders>
  <Loggers>
    <Root level="info">
      <AppenderRef ref="Console"/>
      <AppenderRef ref="jmsQueue"/>
    </Root>
  </Loggers>
</Configuration>

如果我注释掉我的JMS Appender,它工作得很好,所以我知道从类路径的角度来看,我的log4j设置是正确的(log4j核心和api jar,以及jackson jars和jboss-client.jar都在整个类路径上)。

但是,当使用JMS Appender运行客户端应用程序时,我会出现以下错误:

[stderr] Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.jboss.remoting3.ConfigurationEndpointSupplier$Holder
[stderr]    at org.jboss.remoting3.ConfigurationEndpointSupplier.get(ConfigurationEndpointSupplier.java:84)
[stderr]    at org.jboss.remoting3.ConfigurationEndpointSupplier.get(ConfigurationEndpointSupplier.java:40)
[stderr]    at org.wildfly.common.context.ContextManager.getPrivileged(ContextManager.java:286)
[stderr]    at org.jboss.remoting3.Endpoint.getCurrent(Endpoint.java:81)
[stderr]    at org.wildfly.naming.client.remote.RemoteNamingProviderFactory.getEndpoint(RemoteNamingProviderFactory.java:49)
[stderr]    at org.wildfly.naming.client.remote.RemoteNamingProviderFactory.supportsUriScheme(RemoteNamingProviderFactory.java:40)
[stderr]    at org.wildfly.naming.client.WildFlyRootContext.getProviderContext(WildFlyRootContext.java:784)
[stderr]    at org.wildfly.naming.client.WildFlyRootContext.lookup(WildFlyRootContext.java:140)
[stderr]    at java.naming/javax.naming.InitialContext.lookup(InitialContext.java:409)
[stderr]    at org.apache.logging.log4j.core.net.JndiManager.lookup(JndiManager.java:172)
[stderr]    at org.apache.logging.log4j.core.appender.mom.JmsManager.createConnection(JmsManager.java:323)
[stderr]    at org.apache.logging.log4j.core.appender.mom.JmsManager.<init>(JmsManager.java:250)
[stderr]    at org.apache.logging.log4j.core.appender.mom.JmsManager.<init>(JmsManager.java:54)
[stderr]    at org.apache.logging.log4j.core.appender.mom.JmsManager$JmsManagerFactory.createManager(JmsManager.java:130)
[stderr]    at org.apache.logging.log4j.core.appender.mom.JmsManager$JmsManagerFactory.createManager(JmsManager.java:125)
[stderr]    at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:113)
[stderr]    at org.apache.logging.log4j.core.appender.mom.JmsAppender$Builder.build(JmsAppender.java:118)
[stderr]    at org.apache.logging.log4j.core.appender.mom.JmsAppender$Builder.build(JmsAppender.java:50)
[stderr]    at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:123)
[stderr]    at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:959)
[stderr]    at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:899)
[stderr]    at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:891)
[stderr]    at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:514)
[stderr]    at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:238)
[stderr]    at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:250)
[stderr]    at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:547)
[stderr]    at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:619)
[stderr]    at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:636)
[stderr]    at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:231)
[stderr]    at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:243)
[stderr]    at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
[stderr]    at org.apache.logging.log4j.LogManager.getContext(LogManager.java:174)
[stderr]    at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:648)
[stderr]    at com.rsc.delphi.logger.log4j.Log4jLogger.<init>(Unknown Source)
[stderr]    ... 20 more

有没有办法获得更多的信息来弄清楚这里的失败是什么?同样,以编程方式连接到我的Wildfly JMS是很好的,只是Log4J2出现了一个问题。

提前谢了。

共有1个答案

段干跃
2023-03-14

看着它,我的第一个猜测是问题不在堆栈跟踪的顶部。类加载问题可能源于log4j2获得到wildfly命名接口的连接。

看起来现在提供了一个新的InitialContextFactory(子类)模块。这意味着你必须改变:

org.jboss.naming.remote.client.InitialContextFactory

致:

org.wildfly.naming.client.WildFlyInitialContextFactory
 类似资料:
  • 我正在为我的项目创建一个使用Log4j2的JAR文件。我已将Log4j2 jar(用于核心和API)保存在“src”文件夹下的“lib”文件夹中。在Eclipse中,我导出了我的项目来创建JAR文件,并检查了JAR文件中是否包含/存在“lib”文件夹。 当我从eclipse中运行项目时,它运行得非常好,但是当我尝试通过cmd提示符执行jar时,我得到了以下错误: 导致错误的代码行(第20行)是:

  • 我正在处理一个使用log4j2的java项目,并且希望设置日志记录,与我在使用log4net的.net旧项目中设置的日志记录相同。 有一些事情我想不通,如何在log4j2中做。 提前道谢!

  • log4j2的半天滚动不适用于给定的属性文件。 如果给定时间间隔,并且文件夹以和的形式给出,则翻转将每小时和每分钟工作一次 如何半天翻转?log4j2支持吗?

  • 就像https://docs.wildfly.org/14/developerguide.html所说的那样,我使用下面的代码配置了WebService客户端的超时: 只要我的WebService客户机运行在使用JDK8的WildFly8上,这就工作得很好。自从我将它迁移到WildFly14/JDK11之后,这个解决方案就不再起作用了。我试了几个地图键,比如: 有人知道吗? 你好,罗伯特

  • 我需要删除每天滚动的旧日志文件。要限制我尝试的文件数,请执行以下操作: 但是日志没有被删除。 现在我在尝试 但我得到了一个错误: 错误DefaultRolloverStrategy包含无效元素或属性“Delete” 我的log4j2有点问题。xml文件? 我将maven与以下内容一起使用:

  • 我试图将Spring Boot日志重定向到log4j2,但我看不出配置中缺少什么。 请注意,在A和B之间,在下面的图片1中,状态日志如何包含我想要的模式中的一些日志条目,但有些不包含。 图片中的“MYCONFIG” 我所追求的是在Spring Boot启动后自定义日志的格式。 图1-控制台输出: 图2-log4j2。属性文件 到目前为止,我所看到的是:https://logging.apache.