log4j(RollingFileおよびConsoleアペンダー)を使用する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
LOG4Jを使用している2つのサーバー間で競合が発生する可能性はありますか?ネット上で何も見つかりませんでした。
ありがとう
補遺
- JBossとJavaサーバーは異なるディレクトリにあります
- JBossとJavaサーバーはポートを共有しません(8080 / 8433->JBossおよび20400->Java)
- JBossとJavaサーバーは、独自のライブラリフォルダーに独自のlog4jxxxx.jarを持っています
- Java Log4jバージョン:log4j-1.2.16.jar(1.2.17も試しました)
- JBossバージョン:jboss-5.1.0.GA
- 両方とも異なるファイルに書き込みます
設定ファイルは次のとおりです:(基本的にコンソールとアペンダーファイルのみ)
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(コメント付きのアペンダーを削除しました)
<!-- ======================= -->
<!-- Setup the Root category -->
<!-- ======================= -->
<appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="File" value="${jboss.server.log.dir}/server.log"/>
<param name="Append" value="true"/>
<!-- In AS 5.0.x the server log threshold was set by a system
property. In 5.1 and later we are instead using the system
property to set the priority on the root logger (see <root/> below)
<param name="Threshold" value="${jboss.server.log.threshold}"/>
-->
<!-- Rollover at midnight each day -->
<param name="DatePattern" value="'.'yyyy-MM-dd"/>
<!-- Rollover at the top of each hour
<param name="DatePattern" value="'.'yyyy-MM-dd-HH"/>
-->
<layout class="org.apache.log4j.PatternLayout">
<!-- The default pattern: Date Priority [Category] (Thread) Message\n -->
<param name="ConversionPattern" value="%d %-5p [%c] (%t) %m%n"/>
<!-- The full pattern: Date MS Priority [Category] (Thread:NDC) Message\n
<param name="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x) %m%n"/>
-->
</layout>
</appender>
<!-- ============================== -->
<!-- Append messages to the console -->
<!-- ============================== -->
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="Target" value="System.out"/>
<param name="Threshold" value="INFO"/>
<layout class="org.apache.log4j.PatternLayout">
<!-- The default pattern: Date Priority [Category] Message\n -->
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
</layout>
</appender>
<root>
<!--
Set the root logger priority via a system property. Note this is parsed by log4j,
so the full JBoss system property format is not supported; e.g.
setting a default via ${jboss.server.log.threshold:WARN} will not work.
-->
<priority value="${jboss.server.log.threshold}"/>
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>