2

完全に困惑しているlog4jを使用して奇妙な動作が見られます。BlazeDS で使用するのはこれが初めてで、見落としていた小さな問題であることを願っています。

この Web アプリでは、2 つの Java クラスと blazeDS からのログ記録に log4j を使用しています。org.springframework.flex.core.CommonsLoggingTarget を介して BlazeDS を commons-logging にフックし、log4j を基になるロガーとして使用しています。

blazeds ロガーの下で「Console」と「MyFile」の両方にアペンダーを設定しましたが、コンソール出力は期待どおりに機能していますが、MyFile には何も書き込まれません。ファイルは実際に作成されますが、0KB のままです。一方、私の 2 つの Java クラスは、コンソールとローリング ファイルの両方に問題なくログを記録しています。ローカルでテストするときと、Tomcat にデプロイするときの両方で、この動作が見られます。

最後の詳細 - ローカルでテストするときに、MyFile パスを絶対パスに変更したところ、ファイルが追加されていることがわかりました。これは、相対パスの問題であると思われますが、Java ロギングでは問題なく動作しています。

commons-logging.properties:

org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.LogFactoryImpl
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger

log4j.xml:

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="trace" debug="true">
  <appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>

    <RollingFile name="RollingFile" fileName="logs/ImpactTradeQuery.log"
                                    filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
      <PatternLayout>
        <pattern>%d %p %C{1.} [%t] %m%n</pattern>
      </PatternLayout>
      <Policies>
        <TimeBasedTriggeringPolicy />
        <SizeBasedTriggeringPolicy size="25 MB"/>
      </Policies>
      <DefaultRolloverStrategy max="25"/>
    </RollingFile>

    <File name="MyFile" immediateFlush="true" fileName="logs/app.log">
      <PatternLayout>
        <pattern>%d %p %C{1.} [%t] %m%n</pattern>
      </PatternLayout>
    </File>
  </appenders>
  <loggers>
    <root level="trace">
        <appender-ref ref="Console"/>
    </root>
    <logger name="flex.samples.trade.tradeService" level="trace" additivity="False">
        <appender-ref ref="RollingFile"/>
        <appender-ref ref="Console"/>
    </logger>
    <logger name="flex.samples.ConnectionHelper" level="trace" additivity="False">
        <appender-ref ref="RollingFile"/>
        <appender-ref ref="Console"/>
    </logger>
    <logger name="blazeds" level="trace" additivity="True">
        <appender-ref ref="MyFile"/>
        <appender-ref ref="Console"/>
    </logger>
    </loggers>
</configuration>

サービス構成.xml:

<logging>
        <target class="flex.messaging.log.ConsoleTarget" level="Error">
            <properties>
                <prefix>[BlazeDS] </prefix>
                <includeDate>false</includeDate>
                <includeTime>false</includeTime>
                <includeLevel>false</includeLevel>
                <includeCategory>false</includeCategory>
            </properties>
            <filters>
                <pattern>Endpoint.*</pattern>
                <pattern>Service.*</pattern>
                <pattern>Configuration</pattern>
            </filters>
        </target>
        <target class="org.springframework.flex.core.CommonsLoggingTarget" level="All">
            <properties>
                <categoryPrefix>blazeds</categoryPrefix>
            </properties>
            <filters>
                <pattern>Endpoint.*</pattern>
                <pattern>Service.*</pattern>
                <pattern>Configuration</pattern>
            </filters>
        </target>
    </logging>
4

1 に答える 1

1

Tomcat (log4j-jcl) で欠落している jar ファイルが問題の原因であることが判明しました。ライブラリがアプリと共に適切にパッケージ化されると、ロギングは期待どおりに機能しました。

于 2012-11-08T18:58:18.607 に答える