LOG4J冲突JBOSS&;Java程序

LOG4J冲突JBOSS&;Java程序,java,jboss,log4j,broken-pipe,Java,Jboss,Log4j,Broken Pipe,我已经从一个使用log4j(RollingFile和Console appender)的jar启动了一个java服务器。独自一人:没问题,它可以工作。 我有一个使用log4j(默认安装)的JBoss服务器。当它单独运行时,一切正常 当我首先启动Java服务器和JBoss时,也没有问题 但是,当首先启动JBoss,然后启动java服务器时,最后一个服务器不会记录任何内容,JBoss向我发送以下消息: 错误[ServerThread]未能初始化 java.io.EOFException

我已经从一个使用log4j(RollingFile和Console appender)的jar启动了一个java服务器。独自一人:没问题,它可以工作。 我有一个使用log4j(默认安装)的JBoss服务器。当它单独运行时,一切正常

当我首先启动Java服务器和JBoss时,也没有问题

但是,当首先启动JBoss,然后启动java服务器时,最后一个服务器不会记录任何内容,JBoss向我发送以下消息: 错误[ServerThread]未能初始化

java.io.EOFException
        at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2297)
        at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2766)
        at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:797)
        at java.io.ObjectInputStream.<init>(ObjectInputStream.java:297)
        at org.jboss.invocation.pooled.interfaces.OptimizedObjectInputStream.<init>(OptimizedObjectInputStream.java:147)
        at org.jboss.invocation.pooled.server.ServerThread.dorun(ServerThread.java:265)
        at org.jboss.invocation.pooled.server.ServerThread.run(ServerThread.java:156)
log4j:WARN Detected problem with connection: java.net.SocketException: Broken pipe
java.io.EOFException
在java.io.ObjectInputStream$PeekInputStream.readFully处(ObjectInputStream.java:2297)
位于java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2766)
位于java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:797)
位于java.io.ObjectInputStream。(ObjectInputStream.java:297)
位于org.jboss.invocation.pooled.interfaces.OptimizedObjectInputStream。(OptimizedObjectInputStream.java:147)
位于org.jboss.invocation.poold.server.ServerThread.dorun(ServerThread.java:265)
位于org.jboss.invocation.pooled.server.ServerThread.run(ServerThread.java:156)
log4j:警告检测到连接问题:java.net.SocketException:管道断裂
使用LOG4J的两台服务器之间是否存在可能的冲突?我在网上什么也没找到

谢谢

附录

  • JBoss和Java服务器位于不同的目录中
  • JBoss和Java服务器不共享任何端口(8080/8433-->JBoss和20400-->Java)
  • JBoss和Java服务器在自己的库文件夹中有自己的log4jxxxx.jar
  • Javalog4j版本:Log4j-1.2.16.jar(我也试过1.2.17)
  • JBoss版本:JBoss-5.1.0.GA
  • 两者都写在不同的文件中
以下是配置文件:(基本上仅限于console和appender文件)

Java

      <!--  mocutil import -->
        <appender name="mocutilImport" class="org.apache.log4j.RollingFileAppender">
                <param name="Threshold" value="INFO" />
                <param name="File" value="log/mocutilImport.log" />
                <param name="MaxFileSize" value="5000KB" />
            <!-- Keep five backup file -->
            <param name="MaxBackupIndex" value="5"/>
                <layout class="org.apache.log4j.PatternLayout">
                        <param name="ConversionPattern" value="%d %-5p - %m%n" />
                </layout>
        </appender>
        <appender name="NectarMotrServer" class="org.apache.log4j.RollingFileAppender">
                <param name="Threshold" value="INFO" />
                <param name="File" value="log/NectarMotrServer.log" />
                <param name="MaxFileSize" value="5000KB" />
            <!-- Keep five backup file -->
            <param name="MaxBackupIndex" value="5"/>
                <layout class="org.apache.log4j.PatternLayout">
                        <param name="ConversionPattern" value="%d %-5p - %m%n" />
                </layout>
        </appender>
        <appender name="NectarMotrServerDev" class="org.apache.log4j.RollingFileAppender">
                <param name="Threshold" value="DEBUG" />
                <param name="File" value="log/NectarMotrServerDev.log" />
                <param name="MaxFileSize" value="5000KB" />
            <!-- Keep five backup file -->
            <param name="MaxBackupIndex" value="5"/>
                <layout class="org.apache.log4j.PatternLayout">
                        <param name="ConversionPattern" value="%d %c{1} [%t] %p - %m%n" />
                </layout>
        </appender>
    <!--  Default  -->
        <appender name="console" class="org.apache.log4j.ConsoleAppender">
                <param name="Threshold" value="TRACE" />
           <param name="Target" value="System.out"/>
           <layout class="org.apache.log4j.PatternLayout">
             <param name="ConversionPattern" value="[%d] %c{1} - %m%n" />
           </layout>
         </appender>
    <category name="fr.edf.nectar">
            <appender-ref ref="NectarmotrServer"/>
            <appender-ref ref="NectarmotrServerDev"/>
            <appender-ref ref="console"/>
    </category>
    <category name="fr.edf.nectar.interfaces.motr.imports.mocutil">
            <appender-ref ref="mocutilImport"/>
    </category>

     <root>
        <priority value="ALL"/>
     </root>

JBOSS(我删除了带注释的附加器)


在同一台机器上运行多个应用程序并使用Log4j设施没有问题。问题是,两台服务器中的Log4j配置文件在哪里?Log4j在哪里生成两台服务器中的日志文件?你用的是什么appender?任何共同点都可能导致问题。尝试使用单独的配置文件、在不同文件夹中生成的日志文件以及拥有自己的log4jjar副本的两台服务器来隔离这两台服务器

显示的错误很奇怪,因为它涉及套接字。Log4j使用任何依赖于套接字的appender?有没有像链锯一样的监控日志的GUI工具


提供有关两台服务器中安装的Log4j的更多信息。

在同一台机器上运行多个应用程序并使用Log4j设施没有问题。问题是,两台服务器中的Log4j配置文件在哪里?Log4j在哪里生成两台服务器中的日志文件?你用的是什么appender?任何共同点都可能导致问题。尝试使用单独的配置文件、在不同文件夹中生成的日志文件以及拥有自己的log4jjar副本的两台服务器来隔离这两台服务器

显示的错误很奇怪,因为它涉及套接字。Log4j使用任何依赖于套接字的appender?有没有像链锯一样的监控日志的GUI工具

提供有关两台服务器中安装的Log4j的更多信息。

以下是发生的情况(感谢David Olván Ubieto的帮助):

在Java服务器中,我们使用的是,查看我发现的类:

Util.Logger()
      Use chainsaw, if available or a default logger.
引用David Chainsaw可能会有问题,因为它使用端口
4445
,这与JBoss
invoker相同,type=pooled
service()

因此,我认为,启动服务器时,桥接库会尝试连接到
4445
,以查看是否存在链锯。它检测到一些东西并决定使用
4445
作为日志端口,导致Java没有日志,同时JBoss在
4445
上接收到奇怪的消息并抛出异常

首先启动Java,将导致使用我的Log4j配置和JBoss的lib按预期工作

要更正我修改的所有内容,
../jboss-5.1.0.GA/server/default/conf/bindingservice.beans/META-INF/bindings jboss-beans.xml
,如下所示:

...
        <!-- Pooled invoker -->
        <bean class="org.jboss.services.binding.ServiceBindingMetadata">
           <property name="serviceName">jboss:service=invoker,type=pooled</property>
           <property name="port">[PORT OTHER THAN 4445]</property>
           <property name="description">Socket for the legacy Pooled invoker</property>
        </bean>

...
。。。
jboss:service=invoker,type=pooled
[除4445以外的端口]
旧池调用程序的套接字
...
以下是发生的事情(感谢大卫·奥利文·乌比托的帮助):

在Java服务器中,我们使用的是,查看我发现的类:

Util.Logger()
      Use chainsaw, if available or a default logger.
引用David Chainsaw可能会有问题,因为它使用端口
4445
,这与JBoss
invoker相同,type=pooled
service()

因此,我认为,启动服务器时,桥接库会尝试连接到
4445
,以查看是否存在链锯。它检测到一些东西并决定使用
4445
作为日志端口,导致Java没有日志,同时JBoss在
4445上接收到奇怪的消息<